w Collection
Jest:Binary Search na liście, ale nie dla zestawu
binarySearch(List list, Object key)
Dlaczego jest przeszukiwanie binarne nie dotyczy Set
? Dlaczego to jest tylko dla List
?
Jakiś konkretny powód?
w Collection
Jest:Binary Search na liście, ale nie dla zestawu
binarySearch(List list, Object key)
Dlaczego jest przeszukiwanie binarne nie dotyczy Set
? Dlaczego to jest tylko dla List
?
Jakiś konkretny powód?
Zestaw jest nieuporządkowany i nie zawiera indeksów dla zawartych w nim elementów. Dlatego metoda binarySearch(), która zwraca indeks elementu, nie ma sensu.
Wyszukiwanie binarne oznacza posortowany pojemnik. Zestaw jest nieuporządkowany (HashSet
), w którym to przypadku nie można przeprowadzić wyszukiwania binarnego lub jest ono zamawiane (TreeSet
), w którym to przypadku jego operacja wyszukiwania jest już tak wydajna jak przeszukiwanie binarne (to jest O(Log2(N))
).
W takim przypadku wyszukiwanie binarne będzie działać tylko wtedy, gdy lista zostanie uporządkowana i posortowana. tzn. nie działa dla wszystkich list, tylko wstępnie sortowane.
Zestaw nie jest zamówiony i nie można go sortować.
Jeśli zestaw jest sortowana, można zastosować jedną z metod NavigableSet
Binary wyszukiwarka działa na uporządkowanego zbioru. Zestaw nie jest zamówiony.
Dziękuję wszystkim za szybką odpowiedź. Zrozumiałem ze wszystkich odpowiedzi, że binarySearch może być używany tylko na zamówione kolekcje. Ale co jeśli chcę użyć do TreeSet? Czy nie powinno to być możliwe? Czy istnieją jakieś alternatywy do wyszukiwania obiektu z zestawu, który jest podobny do wyszukiwania binarnego? –
Możesz przekonwertować swój zestaw na zamówioną kolekcję. –
Można zamówić 'TreeSet', ale nie można odwoływać się do jego elementów przez indeks. –