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.
GO TO FULL VERSION