Chcę wiedzieć, czy konwersja z ArrayList do Array jest bezpieczna / wskazana? Mam plik tekstowy, w którym każda linia zawiera ciąg:
1236
1233
4566
4568
....
Chcę je przeczytać do listy tablic, a następnie przekonwertować ją na Array. Czy jest to wskazane / zgodne z prawem?
dzięki
Odpowiedzi:
Tak , konwersja pliku
ArrayList
do formatuArray
. To, czy jest to dobry pomysł, zależy od zamierzonego zastosowania. Czy potrzebujesz operacji, któreArrayList
zapewnia? Jeśli tak, zachowaj plikArrayList
. W przeciwnym razie konwertuj!wyjścia
źródło
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
To najlepszy sposób (IMHO).
Ten kod działa również:
Ale to mniej efektywne: tablica ciągów jest tworzona dwukrotnie: za pierwszym razem tworzona jest tablica o zerowej długości, a następnie tworzona jest tablica o rzeczywistym rozmiarze, wypełniana i zwracana. Jeśli więc znasz wymagany rozmiar (od
list.size()
), powinieneś stworzyć tablicę, która będzie wystarczająco duża, aby umieścić wszystkie elementy. W takim przypadku nie jest przydzielane ponownie.źródło
new String[0]
inew String[size]
new String[0]
jest faktycznie bardziej wydajna. shipilev.net/blog/2016/arrays-wisdom-ancientsTo, czy jest to „dobry pomysł”, naprawdę zależy od twojego przypadku użycia.
źródło
Object
zakładając, że v jest ArrayList:
źródło
Istnieją dwa style konwersji kolekcji na tablicę: albo przy użyciu tablicy o ustalonym rozmiarze (jak
c.toArray(new String[c.size()])
), albo przy użyciu pustej tablicy (jakc.toArray(new String[0])
). W starszych wersjach Javy zalecane było używanie tablic o wstępnie ustalonym rozmiarze, ponieważ wywołanie odbicia, które jest niezbędne do utworzenia tablicy o odpowiednim rozmiarze, było dość powolne. Jednak od późnych aktualizacji OpenJDK 6 wywołanie to było zintensyfikowane, sprawiając, że wydajność wersji z pustą tablicą była taka sama, a czasami nawet lepsza w porównaniu z wersją o wcześniejszym rozmiarze. Również przekazywanie tablicy o wstępnie ustalonym rozmiarze jest niebezpieczne dla zbierania współbieżnego lub synchronizowanego, ponieważ wyścig danych jest możliwy między rozmiarem a wywołaniem toArray, co może skutkować dodatkowymi wartościami zerowymi na końcu tablicy, jeśli kolekcja została jednocześnie skurczona podczas operacji. Możesz śledzić jednolity styl:albo przy użyciu pustej tablicy (co jest zalecane we współczesnej Javie), albo przy użyciu tablicy o ustalonej wielkości (która może być szybsza w starszych wersjach Javy lub maszynach JVM innych niż HotSpot) .źródło
To jest zalecane użycie dla nowszej wersji Java (> Java 6)
źródło
Interfejs Collection zawiera metodę toArray () służącą do konwersji nowej kolekcji na tablicę. Istnieją dwie formy tej metody. Wersja bez argumentów zwróci elementy kolekcji w tablicy Object: public Object [] toArray (). Zwrócona tablica nie może rzutować na żaden inny typ danych. To jest najprostsza wersja. Druga wersja wymaga podania typu danych tablicy, którą chcesz zwrócić: public Object [] toArray (Object type []).
w celach informacyjnych zapoznaj się z tym linkiem http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
źródło
Jednym podejściem byłoby dodanie Second for Loop, gdzie drukowanie odbywa się wewnątrz pierwszej pętli for. Lubię to:
źródło
Zależy to od tego, co chcesz osiągnąć, jeśli później będziesz musiał manipulować tablicą, kosztowałoby to więcej wysiłku niż utrzymanie ciągu w ArrayList. Masz również losowy dostęp z ArrayList autorstwa
list.get( index );
źródło