2016-04-25 5 views
5

Wir wissen, dass wirJava sortiert Sammlung mit einer Zählung-basierten sublist

Collections.sort 

zu sortieren eine Liste, nachdem alle eingefügten Elemente verwenden können. Wenn Elemente einmal eingefügt werden, ist die SortedMap effektiver?

Obwohl die SortedMap fehlt die subList Methode.

Was ich brauche, ist etwas wie SortedMap kann effektiv kleine Menge von Elementen viele Male einfügen, und kann immer eine 1 ~ 1000 Unterliste top-down mit einer Comparator Schnittstelle.

Irgendwelche Vorschläge?

+0

diese [Frage] (http://stackoverflow.com/questions/8725387/why-is-there-no-sortedlist-in-java) Sie könnten wahrscheinlich helfen. – zencv

+0

@zencv die Frage erwähnt nicht die 'subList', genau das, was ich brauche – rufushuang

+0

Unterstützt' NavigableSet' diese Art von Subviews? Ich denke, dass Methoden wie 'NavigableSetSetSet (Start, Ende)' hier wahrscheinlich funktionieren könnten. –

Antwort

1

Ich denke, ein SortedSet ist ein NavigableSet die wiederum Methoden wie subSet hat, tailSet, headSet, ceiling und floor für diese Art von Problemen.

So könnte man so etwas wie:

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] 

Natürlich können Sie Sie TreeSet mit erstellen, was auch immer Comparator Sie wollen, und die Durchsuchungen in der Reihenfolge ausführen, dass Sie bequemer finden.

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

Dies ist eine falsche Antwort. Alle Subset/Tail/Head ... und Comparator sind VALUE-BASED, nicht COUNT-BASED. – rufushuang

+0

@rufushuang Ein viel besserer Kommentar wäre gewesen: "Edwin, da Komparatoren wertorientiert sind, wie alle Methoden, die Sie vorgeschlagen haben, wie denken Sie, dass ich dann eine konstante Auswahl an Elementen aus dem Set bekommen könnte"? Sie können sehen, dass meine Art von Kommentar mich ermutigt hätte, zurückzukommen und zu versuchen, meine Antwort zu verbessern oder zu korrigieren. Sie können mehr Fliegen mit Honig fangen als mit Essig. –

Verwandte Themen