2016-04-25 7 views
5

साथ संग्रह हल कर हम जानते हैं कि हम डाला सभी तत्वों के बाद एक सूची को सॉर्ट करनेजावा गिनती आधारित sublist

Collections.sort 

उपयोग कर सकते हैं।

लेकिन यदि समय में एक बार तत्व डाले जाते हैं, तो शायद SortedMap अधिक प्रभावी है?

हालांकि, SortedMap में subList विधि की कमी है।

मुझे जो चाहिए वह SortedMap की तरह कुछ है जो प्रभावी रूप से कई बार तत्वों को सम्मिलित कर सकता है, और Comparator इंटरफेस के साथ हमेशा 1 ~ 1000 सब्लिस्टिस्ट टॉप-डाउन प्राप्त कर सकता है।

कोई सुझाव?

+0

यह [प्रश्न] (http://stackoverflow.com/questions/8725387/why-is-there-no-sortedlist-in-java) शायद आपकी मदद कर सकता है। – zencv

+0

@zencv प्रश्न में 'सबलिस्ट' का उल्लेख नहीं है, जो मुझे – rufushuang

+0

की आवश्यकता है, क्या 'NavigableSet' उन प्रकार के सबव्यूज़ का समर्थन नहीं करता है? मुझे लगता है कि 'NavigableSet.subSet (प्रारंभ, अंत)' जैसी विधियां शायद यहां काम कर सकती हैं। –

उत्तर

1

मुझे लगता है कि एक SortedSet एक NavigableSet जो बारी में समस्याओं के इस प्रकार के लिए subSet, tailSet, headSet, ceiling और floor तरह के तरीकों है।

SortedSet<Integer> set = new TreeSet<>(Arrays.asList(0,1,2,3,4,5,6,7,8,9)); 
SortedSet<Integer> subset = set.subSet(3,7); 
System.out.println(subset); //[3,4,5,6] 

जाहिर है आप आप जो कुछ भी आप चाहते हैं Comparator साथ TreeSet बना सकते हैं और है कि आप और अधिक सुविधाजनक को खोजने के क्रम में खोजें कर:

तो तुम कुछ की तरह कर सकता है।

Comparator<Integer> reverse = Collections.reverseOrder(); 
SortedSet<Integer> set = new TreeSet<>(reverse); 
//same thing here 
+0

यह एक गलत जवाब है। सभी सबसेट/पूंछ/सिर ... और तुलनात्मक मूल्य-आधारित हैं, COUNT-आधारित नहीं। – rufushuang

+0

@rufushuang एक बेहतर टिप्पणी होगी: "एडविन, चूंकि तुलनित्र मूल्य-आधारित हैं, जैसा कि आपने सुझाए गए सभी तरीके हैं, आपको कैसे लगता है कि मैं सेट के बाहर तत्वों की निरंतर श्रृंखला प्राप्त कर सकता हूं"? आप देख सकते हैं कि मेरी टिप्पणी की शैली ने मुझे वापस आने और मेरे उत्तर को सुधारने या सही करने का प्रयास करने के लिए प्रोत्साहित किया होगा। सिरका के साथ आप शहद के साथ अधिक मक्खियों को पकड़ सकते हैं। –

संबंधित मुद्दे