Java List is een geordende verzameling. Java List is een interface die de Collection interface uitbreidt. Java List biedt controle over de positie waar je een element kunt invoegen. Je kunt elementen benaderen via hun index en ook elementen in de lijst zoeken.
Java List
Enkele belangrijke punten over Java List zijn;
- De Java List-interface is lid van het Java Collections Framework.
- De lijst staat toe dat je duplicaatelementen toevoegt.
- De lijst staat toe dat je ‘null’-elementen hebt.
- De List-interface heeft veel standaardmethoden in Java 8, zoals replaceAll, sort en spliterator.
- Lijstindexen beginnen bij 0, net als arrays.
- De lijst ondersteunt Generics en we moeten het altijd gebruiken wanneer mogelijk. Het gebruik van Generics met List zal ClassCastException bij runtime vermijden.
Java List Klassen Diagram
De Java List-interface breidt de Collection-interface uit. De Collection-interface breidt de Iterable-interface uit. Enkele van de meest gebruikte implementatieklassen van List zijn ArrayList, LinkedList, Vector, Stack, CopyOnWriteArrayList. AbstractList biedt een skeletimplementatie van de List-interface om de inspanning bij het implementeren van List te verminderen.
Java List Methoden
Enkele van de handige Java List-methoden zijn;
- int size(): om het aantal elementen in de lijst te krijgen.
- boolean isEmpty(): om te controleren of de lijst leeg is of niet.
- boolean contains(Object o): Geeft true terug als deze lijst het gespecificeerde element bevat.
- Iterator<E> iterator(): Geeft een iterator terug over de elementen in deze lijst in de juiste volgorde.
- Object[] toArray(): Geeft een array terug met alle elementen in deze lijst in de juiste volgorde
- boolean add(E e): Voegt het gespecificeerde element toe aan het einde van deze lijst.
- boolean remove(Object o): Verwijdert de eerste voorkomen van het gespecificeerde element uit deze lijst.
- boolean retainAll(Collection >): Behoudt alleen de elementen in deze lijst die voorkomen in de gespecificeerde collectie.
- void clear(): Verwijdert alle elementen uit de lijst.
- E get(int index): Returns the element at the specified position in the list.
- E set(int index, E element): Replaces the element at the specified position in the list with the specified element.
- ListIterator
listIterator() : Geeft een lijstiterator terug over de elementen in de lijst. - List
subList(int fromIndex, int toIndex) : Geeft een weergave terug van het gedeelte van deze lijst tussen de gespecificeerde fromIndex, inclusief, en toIndex, exclusief. De geretourneerde lijst wordt ondersteund door deze lijst, dus niet-structurele wijzigingen in de geretourneerde lijst worden weerspiegeld in deze lijst, en vice versa.
Sommige van de standaardmethoden toegevoegd aan List in Java 8 zijn;
- default void replaceAll(UnaryOperator
operator) : Vervangt elk element van deze lijst door het resultaat van het toepassen van de operator op dat element. - default void sort(Comparator super E> c): Sorteert deze lijst volgens de volgorde die wordt afgedwongen door de gespecificeerde Comparator.
- default Spliterator
spliterator() : Maakt een Spliterator over de elementen in deze lijst.
Java Array naar Lijst
We kunnen de Arrays-klasse gebruiken om het zicht van een array als lijst te krijgen. We zullen echter geen structurele wijzigingen aan de lijst kunnen aanbrengen, het zal een java.lang.UnsupportedOperationException veroorzaken. Dus de beste manier is om een for-lus te gebruiken om een lijst te maken door over de array te itereren. Hieronder staat een eenvoudig voorbeeld dat laat zien hoe je een Java-array op de juiste manier naar een lijst converteert.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] vowels = {"a","e","i","o","u"};
List vowelsList = Arrays.asList(vowels);
System.out.println(vowelsList);
/**
* List is backed by array, we can't do structural modification
* Both of the below statements will throw java.lang.UnsupportedOperationException
*/
//vowelsList.remove("e");
//vowelsList.clear();
// met een for-lus om elementen van array naar lijst te kopiëren, veilig voor wijziging van de lijst
List myList = new ArrayList<>();
for(String s : vowels){
myList.add(s);
}
System.out.println(myList);
myList.clear();
}
}
Kies een van de bovenstaande methoden op basis van de vereisten van uw project.
Java-lijst naar array
A simple example showing the correct way to convert a list to array.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List letters = new ArrayList();
// voorbeeld toevoegen
letters.add("A");
letters.add("B");
letters.add("C");
// lijst naar array converteren
String[] strArray = new String[letters.size()];
strArray = letters.toArray(strArray);
System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]"
}
}
Java-lijst sorteren
Er zijn twee manieren om een lijst te sorteren. We kunnen de Collections-klasse gebruiken voor natuurlijke sortering of we kunnen de List sort()-methode gebruiken en onze eigen Comparator gebruiken voor sortering. Hieronder staat een eenvoudig voorbeeld voor het sorteren van Java-lijsten.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class ListSortExample {
public static void main(String[] args) {
List ints = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000));
// natuurlijke sortering met behulp van de Collections-klasse
Collections.sort(ints);
System.out.println("Natural Sorting: "+ints);
// Mijn aangepaste sortering, omgekeerde volgorde
ints.sort((o1,o2) -> {return (o2-o1);});
System.out.println("Reverse Sorting: "+ints);
}
}
A sample output is given below. Since I am using Random for generating list elements, it will be different every time.
Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]
Veelvoorkomende bewerkingen op Java-lijsten
De meest voorkomende bewerkingen die worden uitgevoerd op een Java-lijst zijn toevoegen, verwijderen, instellen, wissen, grootte enzovoort. Hieronder staat een eenvoudig voorbeeld van een Java-lijst waarin veelgebruikte methoden worden gebruikt.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListExample {
public static void main(String args[]) {
List vowels= new ArrayList();
//voorbeeld toevoegen
vowels.add("A");
vowels.add("I");
//laten we E invoegen tussen A en I
vowels.add(1,"E");
System.out.println(vowels);
List list = new ArrayList();
list.add("O");list.add("U");
//lijstelementen toevoegen aan letters
vowels.addAll(list);
System.out.println(vowels);
//voorbeeld wissen om de lijst leeg te maken
list.clear();
//groottevoorbeeld
System.out.println("letters list size = "+vowels.size());
//voorbeeld instellen
vowels.set(2, "E");
System.out.println(vowels);
//sublijstvoorbeeld
vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
list = vowels.subList(0, 2);
System.out.println("letters = "+vowels+", list = "+list);
vowels.set(0, "A");
System.out.println("letters = "+vowels+", list = "+list);
list.add("U");
System.out.println("letters = "+vowels+", list = "+list);
}
}
De uitvoer van het bovenstaande Java-lijstvoorbeeldprogramma is;
[A, E, I]
[A, E, I, O, U]
letters list size = 5
[A, E, E, O, U]
letters = [E, E, I, O], list = [E, E]
letters = [A, E, I, O], list = [A, E]
letters = [A, E, U, I, O], list = [A, E, U]
Java-lijstiterator
Hieronder staat een eenvoudig voorbeeld van hoe je door een lijst kunt itereren in Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListIteratorExample {
public static void main(String[] args) {
List list = new ArrayList<>();
for(int i=0; i<5; i++) list.add(i);
Iterator iterator = list.iterator();
//eenvoudige iteratie
while(iterator.hasNext()){
int i = (int) iterator.next();
System.out.print(i + ", ");
}
System.out.println("\n"+list);
//wijziging van de lijst met behulp van een iterator
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next();
if(x%2 ==0) iterator.remove();
}
System.out.println(list);
//wijzigen van de lijststructuur tijdens iteratie
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next(); //ConcurrentModificationException here
if(x==1) list.add(10);
}
}
}
De uitvoer van het bovenstaande programma voor het itereren over Java-lijsten is;
0, 1, 2, 3, 4,
[0, 1, 2, 3, 4]
[1, 3]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
Dat is alles voor een korte samenvatting van Lijsten in Java. Ik hoop dat deze Java-lijstvoorbeelden je helpen om aan de slag te gaan met programmeren van Lijstcollecties.
Source:
https://www.digitalocean.com/community/tutorials/java-list