Dlaczego konstruktorzy ConcurrentSkipListMap nie pozwalają na ustawienie initial capacity
jak HashMap?Dlaczego nie mogę ustawić początkowej pojemności dla ConcurrentSkipListMap?
5
A
Odpowiedz
6
Ponieważ ta struktura danych jest wspierana przez wiele LinkedList, dla których początkowy parametr konstruktora pojemności nie ma znaczenia.
HashMap jest wspierany przez tablicę (ciągłe miejsce w pamięci), dla której ma sens ustalanie początkowej pojemności, ponieważ przekroczenie początkowego rozmiaru tej tabeli powoduje, że HashMap ponownie przydziela nową tabelę ze zwiększonym rozmiarem, który jest bardzo kosztowny.
+1
(Ale w przypadku HashMap odwrotne jest to, że kosztowne jest znaczne przeszacowanie rozmiaru mapy ...) –
Powiązane problemy
- 1. Niektóre regresje podczas używania początkowej pojemności dla ArrayList w pierwszych iteracjach
- 2. Kiedy należy używać ConcurrentSkipListMap?
- 3. Czy istnieje porównanie początkowych pojemności listy dla różnych języków?
- 4. Jak utworzyć PriorityQueue z nowym komparatorem i BRAK określonej początkowej pojemności?
- 5. Jak mogę wyłączyć kolor wskaźnika aktywacji początkowej dla łączy
- 6. Textfield nie wyświetla wartości początkowej
- 7. Dlaczego można zadeklarować zmienną bez wartości początkowej?
- 8. Dlaczego nie mogę ustawić wartości zasobów SolidColorBrush z kodu?
- 9. Dlaczego nie mogę ustawić koloru cienia mojego przycisku?
- 10. Dlaczego nie mogę ustawić tego wyjątkowego ograniczenia w PostgreSQL?
- 11. Dlaczego nie mogę ustawić właściwości zmiennych iteracyjnych w pętli foreach?
- 12. Dlaczego nie ustawić wartość bezpośrednio
- 13. Dlaczego powszechną praktyką jest podwojenie pojemności macierzy, gdy jest pełna?
- 14. Dlaczego nie usunąć ustawić wskaźnik na NULL?
- 15. C: dla deklaracji początkowej pętli int
- 16. Jak włączyć "Treść dynamiczna" dla strony początkowej?
- 17. Zmiana aktywności początkowej aplikacji
- 18. Dlaczego nie mogę używać SetValue do słownika?
- 19. Użytkownicy w początkowej osobie danych
- 20. Jak ustawić szerokość ramki widoku? (Dlaczego nie mogę ustawić go bezpośrednio)
- 21. Dlaczego nie mogę zmniejszyć szerokości mojego przycisku?
- 22. Czy mogę ustawić wartość TTL dla @Cacheable?
- 23. Dlaczego funkcja resize() powoduje kopiowanie, a nie przenoszenie zawartości wektora po przekroczeniu pojemności?
- 24. Dlaczego nie mogę #ifdef stdafx.h?
- 25. Swift init Array o pojemności
- 26. Maksymalne gromadzenie pojemności w C#
- 27. Dlaczego nie mogę zaimportować nltk?
- 28. Zadeklaruj zmienną bez wartości początkowej
- 29. „dla” pętli początkowej deklaracji stosowanych poza trybie C99
- 30. doładowanie :: funkcja roli stable_vector nie zwraca przydzielonej pojemności
@MarkoTopolnik to nowe dla mnie konstrukcje danych. W pewnym sensie wymagam posortowanej implementacji mapy i ta mapa będzie musiała rozwijać równoczesne modyfikacje z wielu wątków. Kiedy szukałem ConcurrentSkipListmap> użyłem Cocurrenthashmap przed i użyłem intialCapacity, tak aby rehashowanie nigdy się nie zdarzyło. – Geek
@Geek - czas na przeczytanie dobrej książki z danymi. –
@StephenC Czytanie Cormen et all, ale jeszcze nie przeszedł do SkipLists. Zakryte uptill czerwone Czarne drzewa. – Geek