Hipotetycznie mam 5 obiektów typu string:
String[] array1 = new String[];
String[] array2 = new String[];
String[] array3 = new String[];
String[] array4 = new String[];
String[] array5 = new String[];
i chcę, aby inny obiekt tablicy zawierał te 5 obiektów tablicy ciągów. Jak mam to zrobić? Czy mogę umieścić go w innej tablicy?
Odpowiedzi:
Lubię to:
lub
(Ta ostatnia składnia może być używana w przypisaniach innych niż w punkcie deklaracji zmiennej, podczas gdy krótsza składnia działa tylko z deklaracjami).
źródło
new String[10][]
?próbować
źródło
arrays[0] = new String[] {"a", "b", "c"}
lub użyj tymczasowej listy: <pre> <code> List <String []> myList = new ArrayList <> (); myList.add (new String [] {"a", "b", "c"}); myList.add (new String [] {"d", "e", "f"}); myList.toArray (tablice); </code> </pre>Chociaż istnieją dwie doskonałe odpowiedzi, które podpowiadają, jak to zrobić, wydaje mi się, że brakuje innej odpowiedzi: w większości przypadków w ogóle nie powinieneś tego robić.
Tablice są uciążliwe, w większości przypadków lepiej jest korzystać z Collection API .
Dzięki kolekcjom możesz dodawać i usuwać elementy i istnieją wyspecjalizowane kolekcje dla różnych funkcji (wyszukiwanie oparte na indeksach, sortowanie, unikalność, dostęp FIFO, współbieżność itp.).
Chociaż oczywiście dobrze i ważne jest, aby wiedzieć o tablicach i ich użyciu, w większości przypadków używanie Kolekcji sprawia, że API jest o wiele łatwiejsze w zarządzaniu (dlatego nowe biblioteki, takie jak Google Guava, prawie w ogóle nie używają tablic).
Więc dla twojego scenariusza wolałbym listę list i utworzyłbym ją przy użyciu guawy:
źródło
jest klasa, o której wspomniałem w komentarzu, który mieliśmy z Seanem Patrickiem Floydem: zrobiłem to w szczególny sposób, który wymaga WeakReference, ale z łatwością można to zmienić za pomocą dowolnego obiektu.
Mam nadzieję, że kiedyś komuś to pomoże :)
Przykład użycia:
źródło