Prawdziwy moc i zaletą TreeSet leży w interfejsie realizuje - NavigableSet
Dlaczego jest tak potężny, a w takim przypadku?
Żeglowny Set interfejs dodać na przykład te 3 ładne metod:
headSet(E toElement, boolean inclusive)
tailSet(E fromElement, boolean inclusive)
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
Te metody pozwalają zorganizować skuteczną algorytm wyszukiwania (bardzo szybko).
Przykład: musimy znaleźć wszystkie nazwy, które zaczynają się i kończą Milla Wladimir:
TreeSet<String> authors = new TreeSet<String>();
authors.add("Andreas Gryphius");
authors.add("Fjodor Michailowitsch Dostojewski");
authors.add("Alexander Puschkin");
authors.add("Ruslana Lyzhichko");
authors.add("Wladimir Klitschko");
authors.add("Andrij Schewtschenko");
authors.add("Wayne Gretzky");
authors.add("Johann Jakob Christoffel");
authors.add("Milla Jovovich");
authors.add("Taras Schewtschenko");
System.out.println(authors.subSet("Milla", "Wladimir"));
wyjściowa:
[Milla Jovovich, Ruslana Lyzhichko, Taras Schewtschenko, Wayne Gretzky]
TreeSet nie wykracza ponad wszystkie elementy, stwierdzi, pierwszy i ostatni elemenets i zwraca nową kolekcję z wszystkimi elementami w zakresie.
Nie chcę zaczynać dodatkowej odpowiedzi, ponieważ niektóre zostały już podane, ale chcę dodać jeszcze jeden fakt: Mówiłeś o dodawaniu/usuwaniu danych. A co z aktualizowaniem? Należy pamiętać, że TreeSet nigdy nie zaktualizuje swojej kolejności sortowania, jeśli zmienisz obiekty elementów w odniesieniu do ich "klucza sortowania". Jeśli chcesz to zrobić, użyj mojej klasy [UpdateableTreeSet] (http://stackoverflow.com/a/11169301/1082681) lub czegoś podobnego. Może to być decydujący czynnik, jeśli masz obiekty ze zmieniającym się stanem. – kriegaex