CodeGym/Blog Java/Random-PL/Metoda Arrays.asList() w Javie
Autor
Volodymyr Portianko
Java Engineer at Playtika

Metoda Arrays.asList() w Javie

Opublikowano w grupie Random-PL
Wielu początkujących myli koncepcję metody Arrays.asList() ze strukturą danych ArrayList. Chociaż mogą wyglądać i brzmieć podobnie, te dwa są zupełnie różne, jeśli chodzi o implementację. W tym poście omówimy podstawowe zastosowanie metody Arrays.asList() i wyjaśnimy pewne nieporozumienia z nią związane.

Dlaczego używany jest Arrays.asList()?

Jeśli masz tablicę, którą chcesz zamienić w listę, to java.util.Arrays zapewnia opakowanie Arrays.asList() do tego celu. Mówiąc prościej, ta metoda przyjmuje tablicę jako parametr i zwraca listę. Główne części interfejsu API platformy Java zostały opracowane przed wprowadzeniem struktury kolekcji. Dlatego od czasu do czasu może zaistnieć potrzeba tłumaczenia między tradycyjnymi tablicami a bardziej nowoczesnymi kolekcjami. Ta funkcja służy jako łącznik między kolekcjami a interfejsami API opartymi na macierzach.Metoda Arrays.asList() w Javie — 1

Przykład

Spójrz na następujący przykład:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);

	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
Wyjście:
Lista: [Amanda, Loren, Keith] HashSet: [Keith, Loren, Amanda] // HashSet nie zachowuje porządku

Czym różnią się Arrays.asList() i ArrayList?

Kiedy wywołujesz metodę Arrays.asList() na tablicy, zwracany obiekt nie jest ArrayList ( implementacją tablicy o zmiennym rozmiarze interfejsu List ). Jest to obiekt widoku z metodami get() i set() , które uzyskują dostęp do tablicy. Wszystkie metody, które mogłyby zmienić rozmiar tablicy, takie jak add() lub remove() powiązanego iteratora, zgłaszają wyjątek UnsupportedOperationException . Powodem, dla którego program Java kompiluje się pomyślnie, ale zgłasza wyjątek czasu wykonania, jest to, że najwyraźniej zwracana jest „Lista” w wynikuTablice.asList() . Gdzie wszystkie operacje dodawania/usuwania są dozwolone. Ale ponieważ podstawowa struktura danych jest „tablicą” bez możliwości zmiany rozmiaru , dlatego w czasie wykonywania zgłaszany jest wyjątek. Oto fragment pokazujący, jak to wygląda:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);

	// using getters and setters to randomly access the list
	diceRollList.set(5, 6);
	diceRollList.set(0, 1);
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);

	diceRollList.add(7); // Add a new Integer to the list
    }
}
Wyjście:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Wyjątek w wątku „main” java.lang.UnsupportedOperationException w java.util.AbstractList.add(AbstractList. java:148) w java.util.AbstractList.add(AbstractList.java:108) w ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Przykłady wykorzystania metody asList().

Od wersji Java SE 5.0 zadeklarowano, że metoda asList() ma zmienną liczbę argumentów. Zamiast przekazywać tablicę, możesz także przekazywać poszczególne elementy. Na przykład:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
Wyjście:
[zima, lato, wiosna, jesień] [1, 3, 5, 7, 9]

Wniosek

Aby użyć Arrays.asList() musisz pamiętać, że jest to tylko metoda opakowująca dla twojego własnego narzędzia. Nie myl go z ArrayList i pamiętaj, że zwraca „listę”. Początkowo możesz napotkać błędy podczas wykonywania funkcji dodawania/usuwania, ale wszystko to znika wraz z konsekwentną praktyką i zrozumieniem. Uderz więc w swoje IDE i ciesz się wspaniałą nauką!
Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy