CodeGym /Java blogg /Slumpmässig /Arrays.asList() Metod i Java
John Squirrels
Nivå
San Francisco

Arrays.asList() Metod i Java

Publicerad i gruppen
Många nybörjare blandar ihop konceptet med Arrays.asList() -metoden med datastrukturen ArrayList. Även om de kan se ut och låta lika, är dessa två helt olika när det kommer till implementering. I det här inlägget kommer vi att täcka den grundläggande användningen av Arrays.asList() -metoden och kommer att eliminera några rådande förvirringar relaterade till den.

Varför används Arrays.asList()?

Om du har en Array som du behöver förvandla till en lista så tillhandahåller java.util.Arrays en wrapper Arrays.asList() för att tjäna detta syfte. Med enkla ord tar denna metod en array som en parameter och returnerar en lista. Större delar av Java-plattformens API utvecklades innan samlingsramverket introducerades. Så ibland kan du behöva översätta mellan traditionella arrayer och de mer moderna samlingarna. Denna funktion fungerar som en länk mellan samlingar och Array-baserade API:er.Arrays.asList() metod i Java - 1

Exempel

Ta en titt på följande exempel:

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);
    }
}
Produktion:
Lista : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet upprätthåller inte ordning

Hur är Arrays.asList() och ArrayList olika?

När du anropar metoden Arrays.asList() på en array, är det returnerade objektet inte en ArrayList (en implementering av List- gränssnittet som kan ändras i storlek) . Det är ett vyobjekt med metoderna get() och set() som kommer åt den underliggande arrayen. Alla metoder som skulle ändra storleken på arrayen som add() eller remove() för den associerade iteratorn kastar en UnsupportedOperationException . Anledningen till att java-programmet kompileras framgångsrikt men ger ett Runtime-undantag är att uppenbarligen en "lista" returneras som ett resultat avArrays.asList() . Där alla tilläggs-/raderingsoperationer är tillåtna. Men eftersom den underliggande datastrukturen är en "matris" som inte kan ändras i storlek , så kastas ett undantag under körningstiden. Här är ett utdrag som visar hur det ser ut:

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
    }
}
Produktion:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Undantag i tråden "main" java.lang.UnsupportedOperationException på java.util.AbstractList.add(AbstractList. java:148) på java.util.AbstractList.add(AbstractList.java:108) på ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Exempel på användning av metoden asList().

Från och med Java SE 5.0 deklareras asList() -metoden att ha ett variabelt antal argument. Istället för att skicka en array kan du också skicka enskilda element. Till exempel:

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);
    }
}
Produktion:
[vinter, sommar, vår, höst] [1, 3, 5, 7, 9]

Slutsats

För att kunna använda Arrays.asList() måste du komma ihåg att det bara är en inpackningsmetod för ditt eget verktyg. Blanda inte ihop det med ArrayList och kom ihåg att det returnerar en "lista". Till en början kan du få fel när du utför tilläggs-/borttagningsfunktioner, men allt försvinner med konsekvent övning och förståelse. Så slå på din IDE och få en fantastisk inlärningsupplevelse!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION