Najlepsza odpowiedź
Pomyśl o różnicach między listą, mapą i zestawem.
Mapa to struktura, która umożliwia wyszukiwanie rzeczy za pomocą klucza. Kiedy projektujesz pod kątem wyszukiwań, zdajesz sobie sprawę, że istnieje wiele kluczowych porównań, a wyszukiwania muszą być szybkie. Drzewo przyspiesza proces porównywania kluczy, organizując klucze w gałęziach; zmniejsza to liczbę kluczowych porównań, które trzeba zrobić.
W zestawie nie ma zduplikowanych elementów, więc za każdym razem, gdy dodajesz przedmiot, musisz porównać go z istniejącymi, aby sprawdzić, czy jest duplikatem. Teraz powracasz do tego samego problemu, co Mapa, więc używasz drzewa do organizowania swoich elementów, aby zmniejszyć liczbę porównań.
Lista ma tylko porządek, dlatego Listę można łatwo zaprojektować tak, aby nie ” t wymagają porównań, aby uzyskać następny (lub być może poprzedni) element w kolejności listy.
Więc chociaż drzewo może pomóc ci stworzyć lepszą mapę lub zestaw, nie może naprawdę pomóc ci zrobić lepszej listy .
Jeśli mówisz o posortowanej liście, w której elementy są wstawiane do listy w kolejności sortowania, teraz wrócisz do porównań do sortowania, więc Drzewo może pomóc w utworzeniu posortowanej listy.
Odpowiedź
Cóż, lista jest uporządkowaną kolekcja – co oznacza, że musisz mieć możliwość losowego dostępu do i-tego elementu. Jeśli kolekcja wewnętrznie tasuje elementy, kolejność wstawiania nie będzie taka sama, jak kolejność elementów w wewnętrznej strukturze danych. Nie możesz więc już polegać na dostępie opartym na indeksach. Dlatego firma Sun nie udostępniła klasy SortedList ani TreeList. To samo można osiągnąć za pomocą Collections.sort (..)
Apache commons-collections nie udostępnia klasy TreeList ( TreeList (Commons Collections 3.2.1 API) ), ale nie jest to posortowana lista i jest tak nazywana, ponieważ wykorzystuje strukturę danych drzewa do wewnętrznego przechowywania elementów