Java ArrayList klasa koristi a dinamičan niz za skladištenje elemenata. To je kao niz, ali postoji nema ograničenja veličine . Elemente možemo dodati ili ukloniti bilo kada. Dakle, mnogo je fleksibilniji od tradicionalnog niza. Nalazi se u java.util paket. To je poput vektora u C++.
ArrayList u Javi također može imati duplicirane elemente. Implementira sučelje List tako da ovdje možemo koristiti sve metode sučelja List. ArrayList interno održava redoslijed umetanja.
Nasljeđuje klasu AbstractList i implementira Popis sučelja .
Važne točke o klasi Java ArrayList su:
- Klasa Java ArrayList može sadržavati duplicirane elemente.
- Klasa Java ArrayList održava redoslijed umetanja.
- Klasa Java ArrayList nije sinkronizirano .
- Java ArrayList dopušta nasumični pristup jer niz radi na bazi indeksa.
- U ArrayList-u, manipulacija je malo sporija nego u LinkedList-u u Javi jer se mora dogoditi mnogo pomicanja ako se bilo koji element ukloni s popisa polja.
- Ne možemo stvoriti popis nizova primitivnih tipova, kao što su int, float, char, itd. U takvim slučajevima potrebno je koristiti potrebnu klasu omotača. Na primjer:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList se inicijalizira prema veličini. Veličina je dinamička u popisu polja, koja varira ovisno o elementima koji se dodaju ili uklanjaju s popisa.
Hijerarhija klase ArrayList
Kao što je prikazano na gornjem dijagramu, klasa Java ArrayList proširuje klasu AbstractList koja implementira sučelje List. Sučelje List proširuje Kolekcija i Iterable sučelja u hijerarhijskom redu.
Deklaracija klase ArrayList
Pogledajmo deklaraciju za klasu java.util.ArrayList.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
Konstruktori ArrayList
Konstruktor | Opis |
---|---|
ArrayList() | Koristi se za izradu praznog popisa polja. |
ArrayList(Zbirka c) | Koristi se za izgradnju liste polja koja je inicijalizirana elementima kolekcije c. |
ArrayList(kapacitet int.) | Koristi se za izradu popisa nizova koji ima navedeni početni kapacitet. |
Metode ArrayList-a
metoda | Opis |
---|---|
poništiti dodati (int indeks, E element) | Koristi se za umetanje navedenog elementa na određeno mjesto na popisu. |
Booleov dodati (I i) | Koristi se za dodavanje navedenog elementa na kraj popisa. |
boolean addAll (kolekcija c) | Koristi se za dodavanje svih elemenata u navedenoj zbirci na kraj ovog popisa, redoslijedom kojim ih je vratio iterator navedene zbirke. |
boolean addAll (int indeks, zbirka c) | Koristi se za dodavanje svih elemenata u navedenoj kolekciji, počevši od navedenog položaja popisa. |
praznina jasno () | Koristi se za uklanjanje svih elemenata s ovog popisa. |
void osiguraj kapacitet (int potreban kapacitet) | Koristi se za povećanje kapaciteta ArrayList instance. |
E get(int index) | Koristi se za dohvaćanje elementa s određene pozicije na popisu. |
Boolean isEmpty() | Vraća true ako je popis prazan, inače false. |
Iterator() | |
listIterator() | |
int lastIndexOf(Object o) | Koristi se za vraćanje indeksa na ovom popisu posljednjeg pojavljivanja navedenog elementa ili -1 ako popis ne sadrži ovaj element. |
Object[] toArray() | Koristi se za vraćanje niza koji sadrži sve elemente na ovom popisu u ispravnom redoslijedu. |
T[] u Niz(T[] a) | Koristi se za vraćanje niza koji sadrži sve elemente na ovom popisu u ispravnom redoslijedu. |
Klon objekta() | Koristi se za vraćanje plitke kopije ArrayList-a. |
Boolean sadrži (objekt o) | Vraća true ako popis sadrži navedeni element. |
int indexOf(Object o) | Koristi se za vraćanje indeksa u ovom popisu prvog pojavljivanja navedenog elementa ili -1 ako popis ne sadrži ovaj element. |
E ukloniti (indeks) | Koristi se za uklanjanje elementa prisutnog na određenom mjestu na popisu. |
boolean ukloniti (objekt o) | Koristi se za uklanjanje prvog pojavljivanja navedenog elementa. |
boolean removeAll (kolekcija c) | Koristi se za uklanjanje svih elemenata s popisa. |
boolean removeIf(Filter predikata) | Koristi se za uklanjanje svih elemenata s popisa koji zadovoljavaju zadani predikat. |
zaštićeni void removeRange (int fromIndex, int toIndex) | Koristi se za uklanjanje svih elemenata unutar zadanog raspona. |
void replaceAll(operator unaryoperator) | Koristi se za zamjenu svih elemenata s liste navedenim elementom. |
void retainAll (Zbirka c) | Koristi se za zadržavanje svih elemenata na popisu koji su prisutni u navedenoj zbirci. |
E skup (int indeks, E element) | Koristi se za zamjenu navedenog elementa na popisu, prisutnog na navedenom mjestu. |
prazno sortiranje (usporednik c) | Koristi se za sortiranje elemenata popisa na temelju navedenog komparatora. |
Spliterator spliterator() | Koristi se za stvaranje spliteratora preko elemenata na popisu. |
Popis subList(int fromIndex, int toIndex) | Koristi se za dohvaćanje svih elemenata koji se nalaze unutar zadanog raspona. |
int size() | Koristi se za vraćanje broja elemenata prisutnih na popisu. |
void trimToSize() | Koristi se za smanjenje kapaciteta ove instance ArrayList na trenutnu veličinu popisa. |
Java negenerički vs. Generička zbirka
Okvir Java zbirke nije bio generički prije JDK 1.5. Od 1.5 je generički.
Java nova generička kolekcija omogućuje vam da imate samo jednu vrstu objekta u kolekciji. Sada je siguran za tip, tako da nije potreban tip za vrijeme izvođenja.
Pogledajmo stari negenerički primjer stvaranja Java zbirke.
namjera namjera
ArrayList list=new ArrayList();//creating old non-generic arraylist
Pogledajmo novi generički primjer stvaranja java kolekcije.
ArrayList list=new ArrayList();//creating new generic arraylist
U generičkoj zbirci specificiramo vrstu u kutnim zagradama. Sada je ArrayList prisiljen imati jedini navedeni tip objekta u sebi. Ako pokušate dodati drugu vrstu objekta, to daje a pogreška tijekom kompilacije .
Za više informacija o Java generičkim proizvodima kliknite ovdje Vodič za Java Generics .
Primjer Java ArrayList
Naziv datoteke: ArrayListExample1.java
import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } }Testirajte sada
Izlaz:
[Mango, Apple, Banana, Grapes]
Ponavljanje ArrayList-a pomoću Iteratora
Pogledajmo primjer za kretanje po elementima ArrayList pomoću sučelja Iterator.
Naziv datoteke: ArrayListExample2.java
import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } }Testirajte sada
Izlaz:
Mango Apple Banana Grapes
Ponavljanje ArrayList-a pomoću petlje For-each
Pogledajmo primjer za obilaženje elemenata ArrayList pomoću petlje for-each
Naziv datoteke: ArrayListExample3.java
import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } }
Izlaz:
Testirajte sadaMango Apple Banana Grapes
Nabavite i postavite ArrayList
The metoda get(). vraća element na navedenom indeksu, dok set() metoda mijenja element.
Naziv datoteke: ArrayListExample4.java
import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } }Testirajte sada
Izlaz:
Returning element: Apple Mango Dates Banana Grapes
Kako sortirati ArrayList
The java.util paket pruža klasu korisnosti Zbirke , koji ima statičku metodu sort(). Koristiti Collections.sort() metodu, možemo lako sortirati ArrayList.
Naziv datoteke: SortArrayList.java
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); } }
Izlaz:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Načini ponavljanja elemenata kolekcije u Javi
Postoje različiti načini za prolazak kroz elemente zbirke:
- Sučeljem Iteratora.
- Po for-svakoj petlji.
- Putem ListIterator sučelja.
- Po for petlji.
- Metodom forEach().
- Metodom forEachRemaining().
Ponavljanje zbirke kroz preostale načine
Pogledajmo primjer za prelazak elemenata ArrayList na druge načine
povezani popis
Naziv datoteke: ArrayList4.java
import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); System.out.println('Traversing list through List Iterator:'); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println('Traversing list through for loop:'); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println('Traversing list through forEachRemaining() method:'); Iterator itr=list.iterator(); itr.forEachRemaining(a-> //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>
Izlaz:
Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay
Korisnički definirani objekti klase u Java ArrayList
Pogledajmo primjer u kojem spremamo objekt klase Student u popis polja.
Naziv datoteke: ArrayList5.java
class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } }
import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,'Sonoo',23); Student s2=new Student(102,'Ravi',21); Student s2=new Student(103,'Hanumat',25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
Izlaz:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Primjer serijalizacije i deserijalizacije Java ArrayList
Pogledajmo primjer za serijalizaciju objekta ArrayList i zatim njegovu deserijalizaciju.
Naziv datoteke: ArrayList6.java
import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); try { //Serialization FileOutputStream fos=new FileOutputStream('file'); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream('file'); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } }
Izlaz:
[Ravi, Vijay, Ajay]
Java ArrayList primjer za dodavanje elemenata
Ovdje vidimo različite načine dodavanja elementa.
Naziv datoteke: ArrayList7.java
primjeri operativnih sustava
import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println('Initial list of elements: '+al); //Adding elements to the end of the list al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After invoking add(E e) method: '+al); //Adding an element at the specific position al.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+al); ArrayList al2=new ArrayList(); al2.add('Sonoo'); al2.add('Hanumat'); //Adding second list elements to the first list al.addAll(al2); System.out.println('After invoking addAll(Collection c) method: '+al); ArrayList al3=new ArrayList(); al3.add('John'); al3.add('Rahul'); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println('After invoking addAll(int index, Collection c) method: '+al); } }
Izlaz:
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat]
Java ArrayList primjer za uklanjanje elemenata
Ovdje vidimo različite načine uklanjanja elementa.
Naziv datoteke: ArrayList8.java
import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); al.add('Anuj'); al.add('Gaurav'); System.out.println('An initial list of elements: '+al); //Removing specific element from arraylist al.remove('Vijay'); System.out.println('After invoking remove(object) method: '+al); //Removing element on the basis of specific position al.remove(0); System.out.println('After invoking remove(index) method: '+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); //Adding new elements to arraylist al.addAll(al2); System.out.println('Updated list : '+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println('After invoking removeAll() method: '+al); //Removing elements on the basis of specified condition al.removeIf(str -> str.contains('Ajay')); //Here, we are using Lambda expression System.out.println('After invoking removeIf() method: '+al); //Removing all the elements available in the list al.clear(); System.out.println('After invoking clear() method: '+al); } }
Izlaz:
An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: []
Primjer Java ArrayList metode retainAll().
Naziv datoteke: ArrayList9.java
import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); al.retainAll(al2); System.out.println('iterating the elements after retaining the elements of al2'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
iterating the elements after retaining the elements of al2 Ravi
Primjer Java ArrayList metode isEmpty().
Naziv datoteke: ArrayList4.java
import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println('Is ArrayList Empty: '+al.isEmpty()); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After Insertion'); System.out.println('Is ArrayList Empty: '+al.isEmpty()); } }
Izlaz:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Java ArrayList Primjer: Knjiga
Pogledajmo primjer ArrayList gdje dodajemo knjige na popis i ispisujemo sve knjige.
Naziv datoteke: ArrayListExample20.java
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 ArrayListExample20 { 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); } } }Testirajte sada
Izlaz:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
Veličina i kapacitet ArrayList-a
Veličina i kapacitet popisa polja dva su pojma koji početnike smatraju zbunjujućim. Shvatimo to u ovom odjeljku uz pomoć nekih primjera. Razmotrite sljedeći isječak koda.
Naziv datoteke: SizeCapacity.java
import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println('The size of the array is: ' + al.size()); } }
Izlaz:
The size of the array is: 0
Obrazloženje: Izlaz ima smisla jer nismo učinili ništa s popisom polja. Sada promatrajte sljedeći program.
nedefiniran nagib
Naziv datoteke: SizeCapacity1.java
import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println('The size of the array is: ' + al.size()); } }
Izlaz:
The size of the array is: 0
Obrazloženje: Vidimo da je veličina još uvijek 0, a razlog za to je što broj 10 predstavlja kapacitet, a ne veličinu. Zapravo, veličina predstavlja ukupan broj elemenata prisutnih u nizu. Budući da nismo dodali nijedan element, veličina popisa nizova je nula u oba programa.
Kapacitet predstavlja ukupan broj elemenata koje lista polja može sadržavati. Stoga je kapacitet popisa polja uvijek veći ili jednak veličini popisa polja. Kada dodamo element na popis polja, on provjerava je li veličina popisa polja postala jednaka kapacitetu ili ne. Ako da, tada se povećava kapacitet popisa polja. Dakle, u gornjem primjeru, kapacitet će biti 10 dok se na popis ne doda 10 elemenata. Kada dodamo 11thelementa, kapacitet se povećava. Imajte na umu da je u oba primjera kapacitet popisa polja 10. U prvom slučaju, kapacitet je 10 jer je zadani kapacitet popisa polja 10. U drugom slučaju, eksplicitno smo spomenuli da je kapacitet polja lista je 10.
Napomena: Ne postoji nikakva standardna metoda kojom bi se utvrdilo kako se povećava kapacitet na popisu polja. Zapravo, način na koji se povećava kapacitet razlikuje se od jedne do druge verzije GDK-a. Stoga je potrebno provjeriti način na koji je kod za povećanje kapaciteta implementiran u GDK. Ne postoji nijedna unaprijed definirana metoda u klasi ArrayList koja vraća kapacitet popisa polja. Stoga, za bolje razumijevanje, koristite metodu kapaciteta() klase Vector. Logika veličine i kapaciteta ista je u klasi ArrayList i klasi Vector.
Povezane teme
Kako sortirati ArrayList u Javi
Razlika između Array i ArrayList
Kada koristiti ArrayList i LinkedList u Javi
Razlika između ArrayList i LinkedList
Razlika između ArrayList i Vector
Kako usporediti dva ArrayList-a u Javi
Kako preokrenuti ArrayList u Javi
Kada koristiti ArrayList i LinkedList u Javi
primjer java klase
Kako napraviti ArrayList samo za čitanje
Razlika između duljine niza i size() ArrayList-a u Javi
Kako sinkronizirati ArrayList u Javi
Kako pretvoriti ArrayList u Array i Array u ArrayList u Javi
Array vs ArrayList u Javi
Kako poredati Java ArrayList silaznim redoslijedom
Kako ukloniti duplikate iz ArrayList-a u Javi