Buduję aplikację do czatu. Obecny Mam wszystkie wiadomości w numerze ArrayList
, co pozwoliło mi pomyśleć - ile elementów ma być zaprojektowanych w stylu ArrayList
? 100? 1.000? 10.000?Ilość elementów w ArrayList
Odpowiedz
ArrayList
nie może pomieścić więcej niż Integer.MAX_VALUE
elementów.
Tak więc 2147483647 to maks.
ArrayList może pomieścić dowolną liczbę elementów do Integer.MAX_VALUE
- wynika to z decyzji projektowej dotyczącej wykorzystania typów danych int
dla indeksów. Ważne jest jednak, jak przydzielasz pamięć - alokacja pamięci jest wolna - i jak przetwarzasz/uzyskujesz dostęp do elementów. Jednak od samego aspektu przechowywania jesteś ograniczony przez MAX_VALUE
. W Javie jest to 2^31-1 = 2 147 483 647.
Do każdego normalnego zastosowania powinno wystarczyć. Jeśli jednak potrzebujesz więcej, możesz łatwo uzyskać kod źródłowy dla niego i zmodyfikować go, aby użyć long
jako typ danych indeksu - a następnie być ograniczony przez Long.MAX_VALUE
.
Przyczyna nie wynika z wyboru indeksów int per se. Przyczyna jest spowodowana przechowywaniem listy implementacji List, która została wybrana ze względu na pożądaną (zamortyzowaną) algorytmiczną złożoność losowego dostępu do listy (która wymaga zachowania przypominającego tablicę). Z kolei ten magazyn wsparcia (tablica) ma to ograniczenie w języku Java/JVM. Można jednak zaimplementować interfejsy List, aby używać ujemnych indeksów, a także dać użytkownikowi 2^32 indeksów przy użyciu tego samego typu danych dla indeksu ('int'), na przykład za pomocą dwóch tablic i kilku dodatkowych obiektów jako rezerwowego sklepu zamiast z jednej tablicy. – user268396
@ user268396 Wystarczająco fair, jednak nadal można uzyskać źródło dla 'ArrayList' i zmodyfikować go, aby zwiększyć maksymalny rozmiar do tego, co chcesz. Utwórz na przykład jego kopię 'Object [] []' i użyj 'long' jako indeksu - teraz jesteś ograniczony przez' Integer.MAX_VALUE^2'. –
Oczywiście, ale moim bardziej ogólnym punktem jest to, że w twojej odpowiedzi (jak stwierdzono) rozumowanie pomija związek pomiędzy ograniczeniem implementacji i zachowaniem implementacji (wydajność/złożoność algorytmiczna).Gdy podjęte w wartości nominalnej, rozsądne pytanie kontynuacji byłoby: dlaczego w ogóle korzystać z ArrayList? Co jest dobre, jeśli wszystko, co może zrobić, to być bardziej ograniczoną wersją 'LinkedList'. Na co odpowiedź brzmi "złożoność algorytmiczna/wydajność", ale wtedy ograniczenie nie jest oczywiste ani wyjaśnione. :) – user268396
ArrayList, który jest wspierany przez tablicę i jest ograniczony do rozmiaru tablicy - tzn. Integer.MAX_VALUE.
Lista łączy nie jest ograniczona w ten sam sposób i może zawierać dowolną liczbę elementów.
zobaczyć podobne pytanie max. length of List in Java
How many data a list can hold at the maximum mieć inne aspekty dotyczące maksymalnej wielkości listy
zobacz http://stackoverflow.com/questions/7632126/maximum-size-of-hashset-vector-linkedlist –
Tak, widzę ...: P Nauczyłem się z tego, dzięki ...: D –
Wielkość ArrayList
jest Integer.MAX_VALUE
. Nie dlatego, że komentarze poprzedzające metodę List#size() mówią, że maksymalny rozmiar dowolnego List
wynosi Integer.MAX_VALUE
jak poniżej.
/**
* Returns the number of elements in this list. If this list contains
* more than <tt>Integer.MAX_VALUE</tt> elements, returns
* <tt>Integer.MAX_VALUE</tt>.
*
* @return the number of elements in this list
*/
int size();
Jest dlatego ArrayList
wykorzystuje szereg wewnętrznych i teoretycznie macierzy może być Integer.MAX_VALUE
wielkości maksymalnie. Aby uzyskać więcej informacji, można zobaczyć this.
To doesn w ogóle nie odpowiedzieć na pytanie. Rozmiar JavaDoc po prostu określa ograniczenie raportowania rozmiaru listy, mówi * nic * o maksymalnym rozmiarze listy. – SimonC
Odpowiedź jest całkowicie myląca, JavaDoc "size()" nie wskazuje na maksymalny rozmiar jakiejkolwiek implementacji listy. – SimonC
- 1. Ilość elementów w Haskell w stylu pointfree
- 2. ilość elementów wewnątrz div z jQuery
- 3. policz ilość elementów między "ten" i "ten" element
- 4. zapytań SQL mnożąc wynik sumę przez ilość elementów wewnętrznych
- 5. ArrayList zawiera inny ArrayList
- 6. Circular ArrayList (rozszerzenie ArrayList)
- 7. Konwersja podmenu ArrayList ArrayList
- 8. Jak można podzielić listę co x elementów i dodać te x ilość elementów do nowej listy?
- 9. Django annotate - warunkowy Ilość
- 10. android - ListView Ilość filtr
- 11. współbieżne ArrayList
- 12. Jak mogę sprawdzić, czy ArrayList zawiera element innego ArrayList?
- 13. Ilość przewijania w Przf ScrollViewer
- 14. typ Ilość w obiekcie JSON
- 15. Policz ilość zapytań w Railsach
- 16. Najlepszy sposób na zmianę ArrayList w Javie
- 17. Java ArrayList w C++
- 18. Java: Efektywne filtrowanie ArrayList?
- 19. Odejmowanie jednej arrayList od innej arrayList
- 20. Kilka pytań na ArrayList
- 21. Ilość kompletacji dialogowe
- 22. Ilość string() metoda
- 23. Czy to możliwe, aby mieć zmienną ilość typów elementów w java klasy generycznej
- 24. Ilość Wyszukiwanie zdarzeń
- 25. Jak utworzyć ArrayList z tablicy w PowerShell?
- 26. Ilość mysql powiela
- 27. PHP Ilość JSON tablicy
- 28. Zmienna ilość zagnieżdżonych pętli
- 29. ArrayList Unrolling
- 30. Ilość SQL - nie działa
Uwaga na wątki. – SLaks
Może to pomaga: http://www.coderanch.com/t/524745/java/java/Maximum-capacity-arrayList-String-objects –
@MarounMaroun nie każdy ma wystarczającą liczbę przedstawicieli do zamknięcia. – CPerkins