CodeGym /Blog Java /Random-PL /Konwersja tablicy na ArrayList w Javie
Autor
Artem Divertitto
Senior Android Developer at United Tech

Konwersja tablicy na ArrayList w Javie

Opublikowano w grupie Random-PL
Cześć! W dzisiejszej lekcji porozmawiamy o tym, jak zainicjować tablicę w Javie i jak przekonwertować tablicę na listę tablic. Tablice są rozszerzeniem klasy Container w Javie i mogą być przydatne jako sposób tymczasowego przechowywania zestawu prymitywnych typów danych, gdy ilość danych jest dokładnie znana. Ale tablice są statyczne po utworzeniu, co oznacza, że ​​kiedy je tworzysz, nie możesz zmienić liczby przechowywanych w nich elementów. Powinieneś pamiętać, jak zainicjować tablicę w Javie; To wygląda tak:

datatype[] isArray;
Gdzie typ danych to dowolny prymitywny typ danych, taki jak int, float, long, a nawet String. Możesz także umieścić nawiasy po deklaracji w następujący sposób:

datatype isArray[];
Jak więc wziąć tę statyczną tablicę z określoną liczbą elementów i przekonwertować ją na ArrayList? Cóż, najpierw przyjrzyjmy się, czym jest ArrayList.

Lista tablic

ArrayList może mieć podobną nazwę do Array, ale jest obsługiwany zupełnie inaczej. To dlatego, że ArrayList nie rozszerza klasy Container, rozszerza klasę List. A to oznacza, że ​​wszystko jest traktowane inaczej. Po pierwsze, ponieważ jest to lista, możesz nią manipulować w inny sposób. Możesz zwiększyć lub zmniejszyć rozmiar ArrayList za pomocą add(element) , który umieszcza element na końcu listy i zwiększa rozmiar o jeden, jeśli to konieczne. Lub możesz użyć trimToSize()który usuwa wszelkie puste indeksy na końcu i przycina ArrayList do jego bieżącego rozmiaru. Widać więc, że używanie ArrayList zamiast samej tablicy ma kilka zalet. Następnie pokażemy dwie metody konwersji z Array na ArrayList i jak cofnąć się, jeśli zajdzie taka potrzeba.

Przejście z Array do ArrayList i ArrayList do Array w Javie

Załóżmy więc, że napisałeś program, który inwentaryzuje, ile nakrętek i śrub ma Twoja firma do naprawy drapaków dla kotów. Przez lata potrzebowałeś tylko 30 różnych typów, więc łatwo było po prostu użyć tablicy do śledzenia. Ale teraz masz nowego klienta, który wymaga od ciebie zaopatrzenia się w dodatkowe 5 typów. Jak możesz zmienić swój program i zachować wszystkie swoje dane ORAZ uniknąć konieczności robienia tego ponownie, gdy odbierasz innego klienta? Zgadza się! Lista tablic! Jak więc przekonwertować tablicę Java na tablicę ArrayList? Istnieją trzy metody. Korzystanie z metody .asList() Tablice Java mają świetne narzędzie, które można zobaczyć, gdy spojrzy się na interfejs API o nazwie .asList() . Więc możesz po prostu napisać w tym:

boltInventory.asList(bolts);
Problem z tą metodą polega na tym, że nie tworzy ona prawdziwej tablicy ArrayList. To, co robi, to tworzenie listy o stałym rozmiarze i niezmiennej. Więc nadal nie możesz zmienić rozmiaru w sposób dynamiczny. Próba dodania lub usunięcia elementów spowoduje wyjątek. Więc chociaż ma to swoje zastosowania, nie jest to prawdziwa konwersja. Ale możemy to wykorzystać. Używanie .asList() jako argumentu Jest to drugi sposób konwersji tablicy na listę w Javie. Ponieważ metoda .asList() tworzy listę, możemy jej użyć do przekazania odwołania do naszej rzeczywistej listy tablic. Oto jak zainicjować ArrayList:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>();
Spowoduje to utworzenie ArrayList, który ma dziesięć pustych komórek. Jednak znak () na końcu może być użyty do przekazania argumentu w celu wypełnienia tablicy ArrayList. Więc łącząc z metodą .asList , masz:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>(Arrays.asList(bolts));
Spowoduje to przekazanie listy utworzonej za pomocą metody .asList() do tablicy ArrayList, dzięki czemu możesz teraz dynamicznie nią manipulować zgodnie z potrzebami. Korzystanie z metody Collections.addAll() Innym sposobem konwersji tablicy na tablicę ArrayList w Javie jest użycie tej metody. Przekazuje zawartość Array do ArrayList. Ogólna składnia tej metody to:

Collections.addAll(c, T);
Gdzie c to miejsce docelowe, a T to, co jest mijane. W naszym przykładzie składnia wyglądałaby tak:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>():
Collections.addAll(boltsInventory, bolts);
Spowoduje to przekazanie całej zawartości śrub Array do nowej ArrayList. Konwertowanie tablicy ArrayList na tablicę Może się zdarzyć, że zajdzie potrzeba przekonwertowania tablicy ArrayList na tablicę w Javie. Jeśli tak, ArrayList ma metodę .toArray(a) , gdzie a jest miejscem docelowym. Tak więc dla naszego przykładu składnia wyglądałaby następująco:

Integer boltsInventoryArray[] = new Integer{boltsInventory.size()];
// this ensures the newly created array is of the same size as the ArrayList
boltsInventoryArray = boltsInventory.toArray(boltsInventoryArray);
Kiedy zmieniasz listę na tablicę w Javie w ten sposób, tworzysz głęboką kopię. Oznacza to, że wszystkie odniesienia do Array różnią się od odniesień do ArrayList. Możesz więc manipulować danymi w tablicy bez zmiany danych przechowywanych w tablicy ArrayList. Przydatne jest przekonwertowanie listy Java na tablicę, gdy trzeba przetestować dane.

Wniosek

Tablice są bardzo przydatne do szybkiego dostępu i szybkiej manipulacji mniejszymi zbiorami danych, ale brak możliwości zmiany ich rozmiaru oznacza, że ​​szybko tracą wydajność przy długotrwałym użytkowaniu. ArrayList zapewnia tę elastyczność i możliwość wstawiania i usuwania węzłów w razie potrzeby. Nauczenie się, jak przekonwertować tablicę Java na listę, poprawi ogólną wydajność twoich programów, a także poprawi ich czas działania.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION