logo

Java ArrayList

Java ArrayList hijerarhija klasa

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 sada
Mango 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:

  1. Sučeljem Iteratora.
  2. Po for-svakoj petlji.
  3. Putem ListIterator sučelja.
  4. Po for petlji.
  5. Metodom forEach().
  6. 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(&apos;Ravi&apos;);//Adding object in arraylist list.add(&apos;Vijay&apos;); list.add(&apos;Ravi&apos;); list.add(&apos;Ajay&apos;); System.out.println(&apos;Traversing list through List Iterator:&apos;); //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(&apos;Traversing list through for loop:&apos;); 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(&apos;Traversing list through forEachRemaining() method:&apos;); Iterator itr=list.iterator(); itr.forEachRemaining(a-&gt; //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,&apos;Sonoo&apos;,23); Student s2=new Student(102,&apos;Ravi&apos;,21); Student s2=new Student(103,&apos;Hanumat&apos;,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+&apos; &apos;+st.name+&apos; &apos;+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(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); try { //Serialization FileOutputStream fos=new FileOutputStream(&apos;file&apos;); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream(&apos;file&apos;); 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(&apos;Initial list of elements: &apos;+al); //Adding elements to the end of the list al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After invoking add(E e) method: &apos;+al); //Adding an element at the specific position al.add(1, &apos;Gaurav&apos;); System.out.println(&apos;After invoking add(int index, E element) method: &apos;+al); ArrayList al2=new ArrayList(); al2.add(&apos;Sonoo&apos;); al2.add(&apos;Hanumat&apos;); //Adding second list elements to the first list al.addAll(al2); System.out.println(&apos;After invoking addAll(Collection c) method: &apos;+al); ArrayList al3=new ArrayList(); al3.add(&apos;John&apos;); al3.add(&apos;Rahul&apos;); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println(&apos;After invoking addAll(int index, Collection c) method: &apos;+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(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); al.add(&apos;Anuj&apos;); al.add(&apos;Gaurav&apos;); System.out.println(&apos;An initial list of elements: &apos;+al); //Removing specific element from arraylist al.remove(&apos;Vijay&apos;); System.out.println(&apos;After invoking remove(object) method: &apos;+al); //Removing element on the basis of specific position al.remove(0); System.out.println(&apos;After invoking remove(index) method: &apos;+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); //Adding new elements to arraylist al.addAll(al2); System.out.println(&apos;Updated list : &apos;+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println(&apos;After invoking removeAll() method: &apos;+al); //Removing elements on the basis of specified condition al.removeIf(str -&gt; str.contains(&apos;Ajay&apos;)); //Here, we are using Lambda expression System.out.println(&apos;After invoking removeIf() method: &apos;+al); //Removing all the elements available in the list al.clear(); System.out.println(&apos;After invoking clear() method: &apos;+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(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); ArrayList al2=new ArrayList(); al2.add(&apos;Ravi&apos;); al2.add(&apos;Hanumat&apos;); al.retainAll(al2); System.out.println(&apos;iterating the elements after retaining the elements of al2&apos;); 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(&apos;Is ArrayList Empty: &apos;+al.isEmpty()); al.add(&apos;Ravi&apos;); al.add(&apos;Vijay&apos;); al.add(&apos;Ajay&apos;); System.out.println(&apos;After Insertion&apos;); System.out.println(&apos;Is ArrayList Empty: &apos;+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,&apos;Let us C&apos;,&apos;Yashwant Kanetkar&apos;,&apos;BPB&apos;,8); Book b2=new Book(102,&apos;Data Communications and Networking&apos;,&apos;Forouzan&apos;,&apos;Mc Graw Hill&apos;,4); Book b3=new Book(103,&apos;Operating System&apos;,&apos;Galvin&apos;,&apos;Wiley&apos;,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+&apos; &apos;+b.name+&apos; &apos;+b.author+&apos; &apos;+b.publisher+&apos; &apos;+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(&apos;The size of the array is: &apos; + 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(&apos;The size of the array is: &apos; + 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