CodeGym /Java-blogg /Tilfeldig /Arrays.asList()-metoden i Java
John Squirrels
Nivå
San Francisco

Arrays.asList()-metoden i Java

Publisert i gruppen
Mange nybegynnere blander sammen konseptet Arrays.asList() -metoden med datastrukturen ArrayList. Selv om de kan se ut og høres like ut, er disse to helt forskjellige når det kommer til implementering. I dette innlegget vil vi dekke den grunnleggende bruken av Arrays.asList()- metoden og vil fjerne noen rådende forvirringer knyttet til den.

Hvorfor brukes Arrays.asList()?

Hvis du har en Array som du må gjøre om til en liste, gir java.util.Arrays en wrapper Arrays.asList() for å tjene dette formålet. Med enkle ord tar denne metoden en matrise som en parameter og returnerer en liste. Store deler av Java-plattformens API ble utviklet før samlingsrammeverket ble introdusert. Så noen ganger må du kanskje oversette mellom tradisjonelle arrays og de mer moderne samlingene. Denne funksjonen fungerer som en kobling mellom samlinger og Array-baserte API-er.Arrays.asList()-metoden i Java - 1

Eksempel

Ta en titt på følgende eksempel:

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);
    }
}
Produksjon:
Liste : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet opprettholder ikke orden

Hvordan er Arrays.asList() og ArrayList forskjellige?

Når du kaller Arrays.asList() -metoden på en matrise, er ikke det returnerte objektet en ArrayList (En matriseimplementering som kan endres størrelse av List- grensesnittet). Det er et visningsobjekt med metodene get() og set() som får tilgang til den underliggende matrisen. Alle metoder som vil endre størrelsen på matrisen, for eksempel add() eller remove() av ​​den tilknyttede iteratoren, kaster en UnsupportedOperationException . Grunnen til at java-programmet kompileres vellykket, men gir et kjøretidsunntak, er at en "liste" tilsynelatende returneres som et resultat avArrays.asList() . Der alle tilleggs-/slettingsoperasjoner er tillatt. Men siden den underliggende datastrukturen er en "matrise" som ikke kan endres størrelse , blir det derfor kastet et unntak under kjøretiden. Her er et utdrag som viser hvordan 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
    }
}
Produksjon:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Unntak 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)

Eksempler på bruk av asList()-metoden

Fra og med Java SE 5.0 er asList() -metoden erklært å ha et variabelt antall argumenter. I stedet for å sende en matrise, kan du også sende individuelle elementer. For eksempel:

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

Konklusjon

For å bruke Arrays.asList() må du huske på at det bare er en innpakningsmetode for ditt eget verktøy. Ikke bland det opp med ArrayList og husk at det returnerer en "liste". Til å begynne med kan du få feil for å utføre tilleggs-/fjerningsfunksjoner, men det hele forsvinner med konsekvent praksis og forståelse. Så treff IDE og få en flott læringsopplevelse!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION