logo

Java ArrayList

Hierarhija razreda Java ArrayList

Java ArrayList razred uporablja a dinamično niz za shranjevanje elementov. Je kot niz, vendar obstaja brez omejitve velikosti . Elemente lahko dodamo ali odstranimo kadarkoli. Zato je veliko bolj prilagodljiv kot tradicionalni niz. Najdemo ga v java.util paket. Je kot Vector v C++.

ArrayList v Javi ima lahko tudi podvojene elemente. Izvaja vmesnik List, tako da lahko tukaj uporabljamo vse metode vmesnika List. ArrayList interno vzdržuje vrstni red vstavljanja.

Podeduje razred AbstractList in izvaja Seznam vmesnika .

Pomembne točke o razredu Java ArrayList so:

  • Razred Java ArrayList lahko vsebuje podvojene elemente.
  • Razred Java ArrayList vzdržuje vrstni red vstavljanja.
  • Razred Java ArrayList ni sinhronizirano .
  • Java ArrayList omogoča naključni dostop, ker matrika deluje na podlagi indeksa.
  • V ArrayList je manipulacija nekoliko počasnejša kot v LinkedList v Javi, ker se mora zgoditi veliko premikanja, če je kateri koli element odstranjen s seznama matrike.
  • Ne moremo ustvariti matričnega seznama primitivnih tipov, kot so int, float, char itd. V takih primerih je treba uporabiti zahtevani ovojni razred. Na primer:
 ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine 
  • Java ArrayList se inicializira glede na velikost. Velikost je dinamična na matričnem seznamu, ki se spreminja glede na elemente, ki so dodani ali odstranjeni s seznama.

Hierarhija razreda ArrayList

Kot je prikazano v zgornjem diagramu, razred Java ArrayList razširja razred AbstractList, ki implementira vmesnik List. Vmesnik List razširja Zbirka in ponovljive vmesnike v hierarhičnem vrstnem redu.

Deklaracija razreda ArrayList

Oglejmo si deklaracijo za razred java.util.ArrayList.

 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 

Konstruktorji seznama ArrayList

Konstruktor Opis
ArrayList() Uporablja se za izdelavo praznega matričnega seznama.
ArrayList(Zbirka c) Uporablja se za izdelavo matričnega seznama, ki je inicializiran z elementi zbirke c.
ArrayList(int zmogljivost) Uporablja se za izdelavo matričnega seznama, ki ima določeno začetno zmogljivost.

Metode ArrayList

Metoda Opis
praznina dodati (int indeks, E element) Uporablja se za vstavljanje določenega elementa na določeno mesto na seznamu.
logično dodati (In in) Uporablja se za dodajanje določenega elementa na konec seznama.
boolean addAll (zbirka c) Uporablja se za dodajanje vseh elementov v podani zbirki na konec tega seznama v vrstnem redu, kot jih vrne iterator podane zbirke.
boolean addAll (int indeks, zbirka c) Uporablja se za dodajanje vseh elementov v podani zbirki, začenši na podanem mestu seznama.
praznina jasno () Uporablja se za odstranitev vseh elementov s tega seznama.
void secureCapacity(int requiredCapacity) Uporablja se za povečanje zmogljivosti primerka ArrayList.
E get(indeks) Uporablja se za pridobivanje elementa z določenega položaja seznama.
logično isEmpty() Vrne true, če je seznam prazen, sicer pa false.
Iterator()
listIterator()
int lastIndexOf(Object o) Uporablja se za vrnitev indeksa na tem seznamu zadnje pojavitve podanega elementa ali -1, če seznam ne vsebuje tega elementa.
Objekt[] vArray() Uporablja se za vrnitev matrike, ki vsebuje vse elemente na tem seznamu v pravilnem vrstnem redu.
T[] v Array(T[] a) Uporablja se za vrnitev matrike, ki vsebuje vse elemente na tem seznamu v pravilnem vrstnem redu.
Klon predmeta() Uporablja se za vrnitev plitke kopije seznama ArrayList.
logično vsebuje (predmet o) Vrne true, če seznam vsebuje navedeni element.
int indexOf(predmet o) Uporablja se za vrnitev indeksa na tem seznamu prve pojavitve podanega elementa ali -1, če seznam ne vsebuje tega elementa.
E odstrani (indeks) Uporablja se za odstranitev elementa, ki je prisoten na določenem mestu na seznamu.
logično odstranjevanje (predmet o) Uporablja se za odstranitev prve pojavitve podanega elementa.
boolean removeAll (zbirka c) Uporablja se za odstranitev vseh elementov s seznama.
logično odstraniIf (predikatni filter) Uporablja se za odstranitev vseh elementov s seznama, ki izpolnjujejo dani predikat.
protected void removeRange (int fromIndex, int toIndex) Uporablja se za odstranitev vseh elementov v danem obsegu.
void replaceAll(operator UnaryOperator) Uporablja se za zamenjavo vseh elementov s seznama z navedenim elementom.
void retainAll (Zbirka c) Uporablja se za ohranitev vseh elementov na seznamu, ki so prisotni v navedeni zbirki.
E niz (int indeks, E element) Uporablja se za zamenjavo določenega elementa na seznamu, ki je prisoten na določenem mestu.
void sort (Comparator c) Uporablja se za razvrščanje elementov seznama na podlagi podanega primerjalnika.
Spliterator spliterator() Uporablja se za ustvarjanje razdelilnika nad elementi na seznamu.
Podseznam seznama (int fromIndex, int toIndex) Uporablja se za pridobitev vseh elementov, ki so v danem območju.
int size() Uporablja se za vrnitev števila elementov na seznamu.
void trimToSize() Uporablja se za zmanjšanje zmogljivosti tega primerka ArrayList na trenutno velikost seznama.

Java Negenerično vs. Generična zbirka

Ogrodje zbirke Java je bilo pred JDK 1.5 negenerično. Od 1.5 je generično.

Nova generična zbirka Java vam omogoča, da imate v zbirki samo eno vrsto predmeta. Zdaj je tipsko varen, zato pretvorba tipov med izvajanjem ni potrebna.

Oglejmo si stari negenerični primer ustvarjanja zbirke Java.

 ArrayList list=new ArrayList();//creating old non-generic arraylist 

Oglejmo si nov generični primer ustvarjanja zbirke java.

 ArrayList list=new ArrayList();//creating new generic arraylist 

V generični zbirki podajamo tip v kotnih oklepajih. Zdaj je ArrayList prisiljen imeti v sebi edino določeno vrsto predmeta. Če poskusite dodati drugo vrsto predmeta, se prikaže a napaka med prevajanjem .

Za več informacij o generičnih izdelkih Java kliknite tukaj Java Generics Tutorial .

Primer Java ArrayList

Ime 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); } } 
Preizkusite zdaj

Izhod:

cdr polna oblika
[Mango, Apple, Banana, Grapes] 

Ponavljanje ArrayList z Iteratorjem

Oglejmo si primer prečkanja elementov ArrayList z vmesnikom Iterator.

Ime 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 } } } 
Preizkusite zdaj

Izhod:

Mango Apple Banana Grapes 

Ponavljanje ArrayList z uporabo zanke For-each

Oglejmo si primer prečkanja elementov ArrayList z uporabo zanke for-each

Ime 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); } } 

Izhod:

Preizkusite zdaj
Mango Apple Banana Grapes 

Pridobite in nastavite ArrayList

The metoda get(). vrne element pri podanem indeksu, medtem ko metoda set(). spremeni element.

Ime 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); } } 
Preizkusite zdaj

Izhod:

Returning element: Apple Mango Dates Banana Grapes 

Kako razvrstiti ArrayList

The java.util paket zagotavlja razred uporabnosti Zbirke , ki ima statično metodo sort(). Uporabljati Zbirke.sort() lahko preprosto razvrstimo ArrayList.

Ime datoteke: SortArrayList.java

java filter tok
 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); } } 

Izhod:

Apple Banana Grapes Mango Sorting numbers... 1 11 21 51 

Načini ponavljanja elementov zbirke v Javi

Obstaja več načinov za prečkanje elementov zbirke:

  1. Z vmesnikom Iterator.
  2. Z zanko za vsako.
  3. Z vmesnikom ListIterator.
  4. Z zanko for.
  5. Z metodo forEach().
  6. Z metodo forEachRemaining().

Ponavljanje zbirke skozi preostale načine

Oglejmo si primer prečkanja elementov ArrayList na druge načine

Ime 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++)>

Izhod:

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 

Uporabniško definirani objekti razreda v Java ArrayList

Oglejmo si primer, kjer shranjujemo objekt razreda študenta na seznamu matrike.

Ime 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); } } } 

Izhod:

 101 Sonoo 23 102 Ravi 21 103 Hanumat 25 

Primer serializacije in deserializacije Java ArrayList

Oglejmo si primer serializacije objekta ArrayList in njegove nato deserializacije.

Ime 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); } } } 

Izhod:

 [Ravi, Vijay, Ajay] 

Primer Java ArrayList za dodajanje elementov

Tukaj vidimo različne načine dodajanja elementa.

Ime datoteke: ArrayList7.java

np.združiti
 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); } } 

Izhod:

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] 

Primer Java ArrayList za odstranjevanje elementov

Tukaj vidimo različne načine za odstranitev elementa.

Ime 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); } } 

Izhod:

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: [] 

Java ArrayList primer metode retainAll().

Ime 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()); } } } 

Izhod:

 iterating the elements after retaining the elements of al2 Ravi 

Primer Java ArrayList metode isEmpty().

Ime 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()); } } 

Izhod:

Is ArrayList Empty: true After Insertion Is ArrayList Empty: false 

Java ArrayList Primer: Knjiga

Oglejmo si primer ArrayList, kjer dodajamo knjige na seznam in tiskamo vse knjige.

Ime 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); } } } 
Preizkusite zdaj

Izhod:

101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6 

Velikost in zmogljivost seznama ArrayList

Velikost in zmogljivost matričnega seznama sta izraza, ki se začetnikom zdita zmešnjava. Razumejmo to v tem razdelku s pomočjo nekaj primerov. Razmislite o naslednjem izrezku kode.

niz matrike v c

Ime 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()); } } 

Izhod:

 The size of the array is: 0 

Pojasnilo: Izhod je smiseln, saj s seznamom matrik nismo naredili ničesar. Zdaj upoštevajte naslednji program.

Ime 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()); } } 

Izhod:

 The size of the array is: 0 

Pojasnilo: Vidimo, da je velikost še vedno 0, razlog za to pa je, da številka 10 predstavlja zmogljivost in ne velikost. Pravzaprav velikost predstavlja skupno število elementov v matriki. Ker nismo dodali nobenega elementa, je torej velikost matričnega seznama v obeh programih enaka nič.

Kapaciteta predstavlja skupno število elementov, ki jih lahko vsebuje matrični seznam. Zato je zmogljivost matričnega seznama vedno večja ali enaka velikosti matričnega seznama. Ko dodamo element na matrični seznam, ta preveri, ali je velikost matričnega seznama postala enaka kapaciteti ali ne. Če je odgovor pritrdilen, se poveča zmogljivost matričnega seznama. Tako bo v zgornjem primeru zmogljivost 10, dokler na seznam ni dodanih 10 elementov. Ko dodamo 11thelement, se zmogljivost poveča. Upoštevajte, da je v obeh primerih kapaciteta matričnega seznama 10. V prvem primeru je kapaciteta 10, ker je privzeta zmogljivost matričnega seznama 10. V drugem primeru smo izrecno omenili, da je zmogljivost matrike seznam je 10.

Opomba: Ni standardne metode, ki bi povedala, kako se poveča zmogljivost na seznamu matrik. Pravzaprav se način povečanja zmogljivosti razlikuje od ene do druge različice GDK. Zato je treba preveriti, kako je koda za povečanje zmogljivosti implementirana v GDK. V razredu ArrayList ni nobene vnaprej določene metode, ki vrne kapaciteto matričnega seznama. Zato za boljše razumevanje uporabite metodo capacity() razreda Vector. Logika velikosti in zmogljivosti je enaka v razredu ArrayList in razredu Vector.

Sorodne teme

Kako razvrstiti ArrayList v Javi

Razlika med Array in ArrayList

git dodaj vse

Kdaj uporabiti ArrayList in LinkedList v Javi

Razlika med ArrayList in LinkedList

Razlika med ArrayList in Vector

Kako primerjati dva ArrayList v Javi

Kako obrniti ArrayList v Javi

Kdaj uporabiti ArrayList in LinkedList v Javi

Kako narediti ArrayList samo za branje

Razlika med dolžino matrike in velikostjo() ArrayList v Javi

Kako sinhronizirati ArrayList v Javi

Kako pretvoriti ArrayList v Array in Array v ArrayList v Javi

Array proti ArrayList v Javi

Kako razvrstiti Java ArrayList v padajočem vrstnem redu

Kako odstraniti dvojnike iz ArrayList v Javi