Java >> Java-zelfstudie >  >> Java

Converteer verzameling naar lijst in Java

Dit artikel introduceert en bespreekt de verschillende methoden voor het converteren van een verzameling naar een lijst in Java.

Gebruik een constructor om verzameling naar lijst in Java te converteren

We kunnen de constructorfunctie gebruiken en de verzameling die we willen converteren in de parameter opgeven.

Syntaxis:

List<Generic> listname = new ArrayList<>(collectionName);

Voorbeeld:

import java.util.*;
public class ExpHStoLL
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        //Adding names in hs
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Hash Set Collection :"+hs);

        //Using constructor of hs for linked list
        List<String> MyList = new LinkedList<String>(hs);
        System.out.println ("\nLinked List after conversion: " + MyList);
    }
}

Uitgang:

Hash Set Collection :[Dhruv, Sahil, Ajay]
Linked List after conversion: [Dhruv, Sahil, Ajay]

Hier hebben we een hash-set met namen gemaakt en vervolgens de constructor hs . gebruikt om een ​​lijst te maken van de hash-set.

Gebruik ingebouwde functies om verzameling naar lijst in Java te converteren

Er zijn twee ingebouwde methoden om een ​​verzameling om te zetten in een lijst in de klassen Array en Verzamelingen.

Gebruik asList verzameling omzetten in lijst in Java

De klasse Array biedt de asList() methode om een ​​arrayverzameling om te zetten in een lijst.

Syntaxis:

List<Generic> MyList = Arrays.asList(ArrayName);

Voorbeeld:

import java.util.*;
public class ExpArrtoL
{
    public static void main(String args[])
    {
        String[] MyArray = { "Dhruv", "Sahil", "Ajay" };
        System.out.println("My Array: " + Arrays.toString(MyArray));

        //Using asList function
        List<String> MyList = Arrays.asList(MyArray);
        System.out.println("List using asList(): " + MyList);
    }
}

Uitgang:

My Array: [Dhruv, Sahil, Ajay]
List using asList(): [Dhruv, Sahil, Ajay]

In de bovenstaande code hebben we een array gemaakt en vervolgens de asList() . gebruikt functie met de arraynaam MyArray als argument om de verzameling in een lijst om te zetten.

Gebruik addAll verzameling omzetten in lijst in Java

addAll() is een methode die in het collecties-framework wordt aangeboden en die we kunnen gebruiken om een ​​collectie naar een lijst te converteren. De elementen uit de collectie kunnen één voor één of als een array worden gespecificeerd.

Dit is vergelijkbaar met de asList() methode, maar dit presteert beter, waardoor de tijdcomplexiteit effectief wordt verbeterd. We moeten zowel een array als een lijst maken voordat we deze methode gebruiken, omdat er twee parameters nodig zijn om items van de verzameling naar de lijst te kopiëren.

Syntaxis:

Collections.addAll(ListName, ArrayName);

Voorbeeld:

import java.util.*;
public class ExpArrtoL
{
    public static void main(String args[])
    {
        String[] MyArray = { "Dhruv", "Sahil", "Ajay" };
        System.out.println("My Array: " + Arrays.toString(MyArray));
        List<String> MyList = new ArrayList<>();

        //Using addAll function
        Collections.addAll(MyList, MyArray);
        System.out.println("List using addAll(): " + MyList);
    }
}

Uitgang:

My Array: [Dhruv, Sahil, Ajay]
List using addAll(): [Dhruv, Sahil, Ajay]

Gebruik de for Loop om verzameling naar lijst in Java te converteren

Als we geen constructor of ingebouwde functies willen gebruiken, moet de for-each loop kan helpen bij het omzetten van een verzameling in een lijst. Deze methode is vriendelijk voor beginners omdat het een gemakkelijke manier van conversie biedt.

Voorbeeld:

import java.util.*;
public class ListUsingForLoop
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Our HashSet HS:"+hs);

        //List of the same size as our HashSet hs
        List<String> MyList = new ArrayList<String>(hs.size());

        //The loop picks each string of HS and adds it to the List
        for (String x : hs)
        MyList.add(x);
        System.out.println("\nList made from HS:" + MyList);
    }
}

Uitgang:

Our HashSet HS:[Dhruv, Sahil, Ajay]

List made from HS:[Dhruv, Sahil, Ajay]

Hier hebben we een hash-set met namen gemaakt en deze voor elke lus gebruikt om die te specificeren voor elke string in de hash-set hs , voegen we de string toe aan onze lijst MyList .

Gebruik collect om verzameling naar lijst in Java te converteren

We kunnen ook de collect() . van de stream gebruiken functie om een ​​collectie om te zetten in een lijst en een resultaat weer te geven zonder onze originele collectie te bewerken.

De collect() methode verzamelt elementen uit gegevensstructuren of verzamelingen en biedt extra logica om ze te manipuleren.

Syntaxis:

List<Generic> ListName = CollectionName.stream().collect(toList());

Voorbeeld:

import java.util.*;
import java.util.stream.*;
public class ExpHStoLL
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        //Adding names in hs
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Hash Set Collection :"+hs);

        List<String> MyList = hs.stream().collect(Collectors.toList());
        System.out.println ("\nConverted to List: " + MyList);
    }
}

Uitgang:

Hash Set Collection :[Dhruv, Sahil, Ajay]
Converted to List: [Dhruv, Sahil, Ajay]

Tijdens het gebruik van de collect() methode van de stream-API om collecties om te zetten in een lijst, het kopiëren gebeurt met behulp van referenties.

Aangezien de lijst een referentiegegevenstype is, d.w.z. dat het het referentieadres van de werkelijke objecten of elementen opslaat, zullen eventuele wijzigingen aan onze lijst ook onze verzameling veranderen.

De kopielijst gemaakt op basis van de originele collectie is een oppervlakkige kopie. Dit betekent dat het verwijderen van de lijst ook het element uit de originele collectie zal verwijderen.

We kunnen dit voorkomen door een diepe kopie te maken, waarbij de kopie van een verzameling naar een lijst resulteert in een nieuwe geheugentoewijzing voor de lijst in plaats van alleen oude referenties te kopiëren.


Java-tag