Seznam v Javě poskytuje zařízení pro údržbu objednaný odběr . Obsahuje metody založené na indexu pro vkládání, aktualizaci, odstraňování a vyhledávání prvků. Může mít také duplicitní prvky. Do seznamu můžeme také uložit nulové prvky.
Rozhraní seznamu se nachází vjava.utilbalíček a zdědí rozhraní kolekce. Je to továrna rozhraní ListIterator. Prostřednictvím ListIteratoru můžeme seznam iterovat vpřed a vzad. Implementační třídy rozhraní List jsouArrayList,Spojový seznam, zásobník a vektor. ArrayList a LinkedList jsou široce používány v programování Java. Třída Vector je od Java 5 zastaralá.
Seznam deklarace rozhraní
public interface List extends Collection
Metody seznamu Java
Metoda | Popis | |
---|---|---|
void add (index int, prvek E) | Používá se k vložení zadaného prvku na zadané místo v seznamu. | |
booleovské sčítání (E e) | Používá se k připojení zadaného prvku na konec seznamu. | |
boolean addAll(kolekce c) | Používá se k připojení všech prvků v zadané kolekci na konec seznamu. | |
boolean addAll(int index, kolekce c) | Používá se k připojení všech prvků v zadané kolekci počínaje zadanou pozicí seznamu. | |
void clear() | Používá se k odstranění všech prvků z tohoto seznamu. | |
boolean rovná se (objekt o) | Používá se k porovnání zadaného objektu s prvky seznamu. | |
int hashcode() | Používá se k vrácení hodnoty hash kódu pro seznam. | |
E get (int index) | Používá se k načtení prvku z konkrétní pozice v seznamu. | |
boolean isEmpty() | Vrací hodnotu true, pokud je seznam prázdný, v opačném případě vrací hodnotu false. | |
int lastIndexOf(Object o) | Používá se k vrácení indexu v tomto seznamu posledního výskytu zadaného prvku nebo -1, pokud seznam tento prvek neobsahuje. | |
Object[] toArray() | Používá se k vrácení pole obsahujícího všechny prvky v tomto seznamu ve správném pořadí. | |
T[] toArray(T[] a) | Používá se k vrácení pole obsahujícího všechny prvky v tomto seznamu ve správném pořadí. | |
boolean obsahuje (Objekt o) | Vrací hodnotu true, pokud seznam obsahuje zadaný prvek | |
boolean obsahuje vše (kolekce c) | Vrací hodnotu true, pokud seznam obsahuje všechny zadané prvky | |
int indexOf(Objekt o) | Používá se k vrácení indexu v tomto seznamu prvního výskytu zadaného prvku nebo -1, pokud seznam tento prvek neobsahuje. | |
E odstranit (int index) | Používá se k odstranění prvku přítomného na zadané pozici v seznamu. | |
booleovské odstranění (objekt o) | Používá se k odstranění prvního výskytu zadaného prvku. | |
boolean removeAll(kolekce c) | Používá se k odstranění všech prvků ze seznamu. | |
void nahradit vše (operátor UnaryOperator) | Používá se k nahrazení všech prvků ze seznamu zadaným prvkem. | |
void keepAll(kolekce c) | Používá se k zachování všech prvků v seznamu, které jsou přítomny v zadané kolekci. | |
E sada (int index, E prvek) | Používá se k nahrazení zadaného prvku v seznamu přítomného na zadané pozici. | |
void sort (Comparator c) | Slouží k řazení prvků seznamu na základě zadaného komparátoru. | |
Spliterator spliterator() | Používá se k vytvoření rozdělovače nad prvky v seznamu. | |
Seznam podseznam (int fromIndex, int toIndex) | Používá se k načtení všech prvků ležících v daném rozsahu. | |
int size() | Používá se k vrácení počtu prvků přítomných v seznamu. |
Java List vs ArrayList
List je rozhraní, zatímco ArrayList je implementační třída List.
Jak vytvořit seznam
Třídy ArrayList a LinkedList poskytují implementaci rozhraní List. Podívejme se na příklady vytvoření seznamu:
//Creating a List of type String using ArrayList List list=new ArrayList(); //Creating a List of type Integer using ArrayList List list=new ArrayList(); //Creating a List of type Book using ArrayList List list=new ArrayList(); //Creating a List of type String using LinkedList List list=new LinkedList();
Stručně řečeno, můžete vytvořit seznam jakéhokoli typu. K určení typu se používají třídy ArrayList a LinkedList. Zde T označuje typ.
Příklad seznamu Java
Podívejme se na jednoduchý příklad List, kde jako implementaci používáme třídu ArrayList.
import java.util.*; public class ListExample1{ public static void main(String args[]){ //Creating a List List list=new ArrayList(); //Adding elements in the List list.add('Mango'); list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Iterating the List element using for-each loop for(String fruit:list) System.out.println(fruit); } }Otestujte to hned
Výstup:
Mango Apple Banana Grapes
Jak převést Array na seznam
Pole můžeme převést na seznam procházením pole a přidáním prvku do seznamu jeden po druhém pomocí metody list.add(). Podívejme se na jednoduchý příklad převodu prvků pole na seznam.
import java.util.*; public class ArrayToListExample{ public static void main(String args[]){ //Creating Array String[] array={'Java','Python','PHP','C++'}; System.out.println('Printing Array: '+Arrays.toString(array)); //Converting Array to List List list=new ArrayList(); for(String lang:array){ list.add(lang); } System.out.println('Printing List: '+list); } }Otestujte to hned
Výstup:
Printing Array: [Java, Python, PHP, C++] Printing List: [Java, Python, PHP, C++]
Jak převést seznam na pole
Seznam můžeme převést na Array voláním metody list.toArray(). Podívejme se na jednoduchý příklad převodu prvků seznamu na pole.
java seznam prázdný
import java.util.*; public class ListToArrayExample{ public static void main(String args[]){ List fruitList = new ArrayList(); fruitList.add('Mango'); fruitList.add('Banana'); fruitList.add('Apple'); fruitList.add('Strawberry'); //Converting ArrayList to Array String[] array = fruitList.toArray(new String[fruitList.size()]); System.out.println('Printing Array: '+Arrays.toString(array)); System.out.println('Printing List: '+fruitList); } }Otestujte to hned
Výstup:
Printing Array: [Mango, Banana, Apple, Strawberry] Printing List: [Mango, Banana, Apple, Strawberry]
Získejte a nastavte prvek v seznamu
The metoda get(). vrátí prvek na daném indexu, zatímco metoda set(). změní nebo nahradí prvek.
řádek vs sloupec
import java.util.*; public class ListExample2{ public static void main(String args[]){ //Creating a List List list=new ArrayList(); //Adding elements in the List list.add('Mango'); list.add('Apple'); list.add('Banana'); list.add('Grapes'); //accessing the element System.out.println('Returning element: '+list.get(1));//it will return the 2nd element, because index starts from 0 //changing the element list.set(1,'Dates'); //Iterating the List element using for-each loop for(String fruit:list) System.out.println(fruit); } }Otestujte to hned
Výstup:
Returning element: Apple Mango Dates Banana Grapes
Jak seřadit seznam
Existují různé způsoby, jak třídit seznam, zde použijeme metodu Collections.sort() k seřazení prvku seznamu. The java.util balíček poskytuje třídu utility Sbírky která má statickou metodu sort(). Za použití Collections.sort() můžeme snadno seřadit libovolný seznam.
import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } }
Výstup:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Rozhraní Java ListIterator
Rozhraní ListIterator se používá k procházení prvku ve směru vzad a vpřed.
Deklarace rozhraní ListIterator
public interface ListIterator extends Iterator
Metody rozhraní Java ListIterator:
Metoda | Popis |
---|---|
void add (E e) | Tato metoda vloží zadaný prvek do seznamu. |
boolean hasNext() | Tato metoda vrátí hodnotu true, pokud má iterátor seznamu více prvků při procházení seznamu v dopředném směru. |
E další() | Tato metoda vrátí další prvek v seznamu a posune pozici kurzoru. |
int nextIndex() | Tato metoda vrací index prvku, který by byl vrácen následným voláním next() |
boolean hasPrevious() | Tato metoda vrátí hodnotu true, pokud má tento iterátor seznamu více prvků při procházení seznamu v opačném směru. |
E předchozí() | Tato metoda vrátí předchozí prvek v seznamu a přesune pozici kurzoru zpět. |
E předchozíIndex() | Tato metoda vrací index prvku, který by byl vrácen následným voláním previous(). |
void remove() | Tato metoda odstraní poslední prvek ze seznamu, který byl vrácen metodami next() nebo previous(). |
neplatná sada (E e) | Tato metoda nahradí poslední prvek vrácený metodami next() nebo previous() zadaným prvkem. |
Příklad rozhraní ListIterator
import java.util.*; public class ListIteratorExample1{ public static void main(String args[]){ List al=new ArrayList(); al.add('Amit'); al.add('Vijay'); al.add('Kumar'); al.add(1,'Sachin'); ListIterator itr=al.listIterator(); System.out.println('Traversing elements in forward direction'); while(itr.hasNext()){ System.out.println('index:'+itr.nextIndex()+' value:'+itr.next()); } System.out.println('Traversing elements in backward direction'); while(itr.hasPrevious()){ System.out.println('index:'+itr.previousIndex()+' value:'+itr.previous()); } } }
Výstup:
Traversing elements in forward direction index:0 value:Amit index:1 value:Sachin index:2 value:Vijay index:3 value:Kumar Traversing elements in backward direction index:3 value:Kumar index:2 value:Vijay index:1 value:Sachin index:0 value:Amit
Příklad seznamu: Kniha
Podívejme se na příklad Seznamu, kam přidáváme Knihy.
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ListExample5 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications and Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Otestujte to hned
Výstup:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Související témata
Rozdíl mezi ArrayList a LinkedList
Kdy použít ArrayList a LinkedList v Javě
Rozdíl mezi ArrayList a Vector
Jak porovnat dva ArrayList v Javě
Jak obrátit ArrayList v Javě
Kdy použít ArrayList a LinkedList v Javě
co je zpracování výjimek v Javě
Jak nastavit ArrayList pouze pro čtení
Rozdíl mezi délkou pole a size() ArrayList v Javě
Jak synchronizovat ArrayList v Javě
Jak převést ArrayList na Array a Array na ArrayList v Javě
Array vs ArrayList v Javě
Jak seřadit Java ArrayList v sestupném pořadí
Jak odstranit duplikáty z ArrayList v Javě