Veel beginners verwarren het concept van de methode Arrays.asList() met de gegevensstructuur ArrayList. Hoewel ze er misschien hetzelfde uitzien en hetzelfde klinken, zijn deze twee totaal verschillend als het gaat om implementatie. In dit bericht behandelen we het basisgebruik van de methode Arrays.asList() en zullen we enkele heersende verwarringen die daarmee verband houden, oplossen.

Waarom wordt Arrays.asList() gebruikt?

Als u een Array hebt die u in een lijst moet veranderen, biedt java.util.Arrays een wrapper Arrays.asList() om dit doel te dienen. Simpel gezegd, deze methode neemt een array als parameter en retourneert een lijst. Grote delen van de Java-platform-API zijn ontwikkeld voordat het collectieraamwerk werd geïntroduceerd. Dus af en toe moet u misschien vertalen tussen traditionele arrays en de modernere collecties. Deze functie dient als koppeling tussen Collections en Array gebaseerde API's.Arrays.asList() Methode in Java - 1

Voorbeeld

Kijk eens naar het volgende voorbeeld:

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);
    }
}
Uitgang:
Lijst: [Amanda, Loren, Keith] HashSet: [Keith, Loren, Amanda] // HashSet handhaaft de volgorde niet

Hoe verschillen Arrays.asList() en ArrayList?

Wanneer u de methode Arrays.asList() op een array aanroept , is het geretourneerde object geen ArrayList (een aanpasbare array- implementatie van de List- interface). Het is een view-object met methoden get() en set() die toegang hebben tot de onderliggende array. Alle methoden die de grootte van de array wijzigen, zoals add() of remove() van de bijbehorende iterator, genereren een UnsupportedOperationException . De reden dat het java-programma met succes compileert maar een runtime-uitzondering geeft, is dat blijkbaar een "Lijst" wordt geretourneerd als resultaat vanArrays.asList() . Waarbij alle bewerkingen voor toevoegen/verwijderen zijn toegestaan. Maar aangezien de onderliggende gegevensstructuur een niet-aanpasbare "array" is , wordt er tijdens de uitvoering een uitzondering gegenereerd. Hier is een fragment dat laat zien hoe het eruit ziet:

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
    }
}
Uitgang:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Uitzondering in thread "main" java.lang.UnsupportedOperationException op java.util.AbstractList.add(AbstractList. java:148) op java.util.AbstractList.add(AbstractList.java:108) op ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Voorbeelden van het gebruik van de asList()-methode

Vanaf Java SE 5.0 wordt gedeclareerd dat de methode asList() een variabel aantal argumenten heeft. In plaats van een array door te geven, kunt u ook individuele elementen doorgeven. Bijvoorbeeld:

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);
    }
}
Uitgang:
[winter, zomer, lente, herfst] [1, 3, 5, 7, 9]

Conclusie

Om Arrays.asList() te gebruiken , moet u er rekening mee houden dat het slechts een wrapper-methode is voor uw eigen hulpprogramma. Verwar het niet met ArrayList en houd er rekening mee dat het een "lijst" retourneert. In eerste instantie kunt u fouten krijgen voor het uitvoeren van functies voor toevoegen/verwijderen, maar dit verdwijnt allemaal met consequente oefening en begrip. Dus druk op je IDE en heb een geweldige leerervaring!