CodeGym /Java Blog /Random-IT /Metodo Arrays.asList() in Java
John Squirrels
Livello 41
San Francisco

Metodo Arrays.asList() in Java

Pubblicato nel gruppo Random-IT
Molti principianti confondono il concetto del metodo Arrays.asList() con la struttura dati ArrayList. Anche se possono sembrare e suonare simili, questi due sono totalmente diversi quando si tratta di implementazione. In questo post, tratteremo l'uso di base del metodo Arrays.asList() e elimineremo alcune confusioni prevalenti relative ad esso.

Perché viene utilizzato Arrays.asList()?

Se hai un Array che devi trasformare in un elenco, java.util.Arrays fornisce un wrapper Arrays.asList() per servire a questo scopo. In parole semplici, questo metodo prende un array come parametro e restituisce un elenco. Le parti principali dell'API della piattaforma Java sono state sviluppate prima dell'introduzione del framework delle raccolte. Quindi, occasionalmente, potrebbe essere necessario tradurre tra gli array tradizionali e le raccolte più moderne. Questa funzione funge da collegamento tra le raccolte e le API basate su array.Metodo Arrays.asList() in Java - 1

Esempio

Dai un'occhiata al seguente esempio:

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);
    }
}
Produzione:
Elenco: [Amanda, Loren, Keith] HashSet: [Keith, Loren, Amanda] // HashSet non mantiene l'ordine

In che modo Arrays.asList() e ArrayList sono diversi?

Quando si chiama il metodo Arrays.asList() su un array, l'oggetto restituito non è un ArrayList ( un'implementazione di array ridimensionabile dell'interfaccia List ). È un oggetto vista con i metodi get() e set() che accedono all'array sottostante. Tutti i metodi che modificherebbero la dimensione dell'array come add() o remove() dell'iteratore associato generano un'eccezione UnsupportedOperationException . Il motivo per cui il programma java viene compilato correttamente ma fornisce un'eccezione di runtime è che, apparentemente, viene restituito un "elenco" come risultato diArrays.asList() . Dove sono consentite tutte le operazioni di aggiunta/cancellazione. Ma poiché la struttura dei dati sottostante è un "array" non ridimensionabile , quindi viene generata un'eccezione in fase di esecuzione. Ecco uno snippet che mostra come appare:

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

Esempi per l'utilizzo del metodo asList()

A partire da Java SE 5.0, il metodo asList() viene dichiarato avere un numero variabile di argomenti. Invece di passare un array, puoi anche passare singoli elementi. Per esempio:

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);
    }
}
Produzione:
[inverno, estate, primavera, autunno] [1, 3, 5, 7, 9]

Conclusione

Per utilizzare Arrays.asList() è necessario tenere presente che è solo un metodo wrapper per la propria utilità. Non confonderlo con ArrayList e tieni presente che restituisce una "lista". Inizialmente potresti ricevere errori per l'esecuzione di funzioni di aggiunta/rimozione, ma tutto scompare con una pratica e una comprensione coerenti. Quindi colpisci il tuo IDE e goditi una fantastica esperienza di apprendimento!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION