2011-09-01 16 views
5

का उपयोग कर रहा डुप्लिकेट तत्वों के साथ एक सूची है एक सूची से डुप्लिकेट तत्वों को दूर करने के लिए कैसे, मैं वेगअपाचे वेग

उदाहरण के लिए उपयोग करने की आवश्यकता, पदों डुप्लिकेट तत्वों को

#foreach ($p in $posts) 
    $p.name //will be unique 
#end 

शामिल मैं निकालना चाहते हैं वेग का उपयोग कर नकल,

किसी भी मदद

+2

ऐसी चीजें जावा पक्ष पर हल की जानी चाहिए, वेग डेटा संरचनाओं के निर्माण के लिए डिज़ाइन नहीं किया गया था। – serg

उत्तर

1

सराहना की जाएगी आप ऐसा नहीं कर सकते वेग में है। आपको एक मॉडल प्रदान करना होगा जिसमें कोई डुप्लिकेट न हो। सबसे आसान तरीका है new HashSet<Post>(postsList) उपयोग करने के लिए है - यह डुप्लिकेट (equals(..) विधि के आधार पर) समाप्त करेंगे

तुम सच में उचित मॉडल पारित नहीं हो सकता, तो आप एक custom tool कि एक सूची लेता है परिभाषित करने के लिए कोशिश कर सकते हैं और एक सेट देता है , लेकिन यह आसान नहीं होगा।

0

वेग में संभव नहीं होने के अलावा, एक वास्तुशिल्प बिंदु से जो आप चाहते हैं वह बिल्कुल समझ में नहीं आता है। "डुप्लीकेट हटाने" भाग कुछ तर्क है और इसे उचित स्थान पर ध्यान देने की आवश्यकता है। ऐसा करने के लिए एक दृश्य सही जगह नहीं है। तो आपको इसे जावा में हर तरह से करना चाहिए और यहां तक ​​कि खुश रहना चाहिए कि वेग में यह संभव नहीं है।

भले ही आपकी भूमिका जावा कोड बदलने की अनुमति न दे, फिर भी यह जावा में हल होनी चाहिए।

5

सिर्फ तर्क के लिए क्योंकि अन्य ने कहा कि वेग के साथ यह संभव नहीं है, मैं यह दिखाना चाहता था कि यह वास्तव में वेग के साथ संभव है, लेकिन अभी भी अनुशंसित नहीं है।

जो लोग इसे कैसे किया जा सकता रुचि रखते हैं के लिए:

#set($uniquePosts = []) 
#foreach($post in $posts) 
    #set($exists = false) 
    #foreach($uniquePost in $uniquePosts) 
     #if($uniquePost.name == $post.name) 
      #set($exists = true) 
      #break 
     #end 
    #end 

    #if(!$exists) 
     #set($added = $uniquePosts.add($post)) 
    #end 

    #set($posts = $uniquePosts) 
#end 

Unique list: 
#foreach($post in $posts) 
    $post.name 
#end 
+0

आपको बहुत धन्यवाद, समस्या हल हो गई है – imby

+1

यह नए संस्करणों के साथ भी आसान है, क्योंकि आप सूची में 'शामिल' विधि का उपयोग कर सकते हैं। इसलिए आप केवल एक फोरैच लूप का उपयोग कर सकते हैं और सभी ऑब्जेक्ट्स को एक सूची में जोड़ सकते हैं, जो पहले से ही निहित नहीं हैं, या आप वेलोसिट मैप-टाइप का भी उपयोग कर सकते हैं और तत्वों को कुंजी के रूप में सहेज सकते हैं ;-) – Falco

3

यह संभव है, और इस वेग के अपने संस्करण के आधार पर काम करना चाहिए। ऊपर दिए गए उत्तर से थोड़ा अधिक संक्षिप्त।

#set($uniquePosts = []) 
#foreach($post in $posts) 
    #if(! $uniquePosts.contains($post.name) ) 
     #if($uniquePosts.add($post.name)) #end 
     ##note the if above is to trap a "true" return - may not be required 
     $post.name 
    #end 
#end 
संबंधित मुद्दे