2016-04-25 15 views
5

Wiemy, że możemy używaćJava sortowane kolekcję z podmenu count oparte

Collections.sort 

posortować listę po wszystkich elementów wstawianych.

Ale jeśli elementy są wstawiane raz, być może SortedMap jest bardziej efektywny?

Chociaż SortedMap brakuje metody subList.

To, czego potrzebuję, to coś w rodzaju SortedMap, które może efektywnie wstawiać niewielką ilość elementów wiele razy i zawsze może uzyskać od 1 do 1000 podrzędnej listy z interfejsem Comparator.

Wszelkie sugestie?

+0

To [pytanie] (http://stackoverflow.com/questions/8725387/why-is-there-no-sortedlist-in-java) mogłoby ci pomóc prawdopodobnie. – zencv

+0

@zencv pytanie nie wspomina o 'subList', że dokładnie to, czego potrzebuję – rufushuang

+0

Czy' NavigableSet' nie obsługuje tego rodzaju subviews? Myślę, że metody takie jak 'NavigableSet.subSet (start, end)' prawdopodobnie mogłyby tutaj działać. –

Odpowiedz

1

myślę, że SortedSet jest NavigableSet który z kolei posiada metody jak subSet, tailSet, headSet, ceiling i floor dla tego rodzaju problemów.

Więc można zrobić coś takiego:

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] 

Oczywiście można tworzyć ci TreeSet ze cokolwiek Comparator chcesz, i przeprowadzenia wyszukiwania w kolejności, które można znaleźć bardziej wygodne.

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

To jest NIEPRAWIDŁOWA odpowiedź. Wszystkie podzbiory/ogony/głowy ... i Komparator są oparte na WARTOŚCI, a nie COUNT. – rufushuang

+0

@rufushuang Znacznie lepszy komentarz brzmiałby: "Edwin, ponieważ komparatory są oparte na wartościach, podobnie jak wszystkie metody, które zasugerowałeś, jak myślisz, w jaki sposób mogę uzyskać ciągły zakres elementów poza zestawem" ?. Widać, że mój styl komentarza zachęciłby mnie do powrotu i spróbowania poprawić lub poprawić moją odpowiedź. Możesz złapać więcej much z miodem niż z octem. –