Java ArrayList luokka käyttää a dynaaminen joukko elementtien säilyttämiseen. Se on kuin joukko, mutta se on olemassa ei kokorajoitusta . Voimme lisätä tai poistaa elementtejä milloin tahansa. Joten se on paljon joustavampi kuin perinteinen matriisi. Se löytyy java.util paketti. Se on kuin C++:n vektori.
Javan ArrayListissä voi olla myös päällekkäisiä elementtejä. Se toteuttaa List-rajapinnan, joten voimme käyttää kaikkia List-rajapinnan menetelmiä täällä. ArrayList ylläpitää lisäysjärjestystä sisäisesti.
Se perii AbstractList-luokan ja toteuttaa Lista käyttöliittymä .
Tärkeitä kohtia Java ArrayList -luokasta ovat:
- Java ArrayList -luokka voi sisältää päällekkäisiä elementtejä.
- Java ArrayList -luokka ylläpitää lisäysjärjestystä.
- Java ArrayList -luokka ei ole synkronoitu .
- Java ArrayList sallii satunnaisen käytön, koska taulukko toimii indeksipohjaisesti.
- ArrayListissä manipulointi on hieman hitaampaa kuin LinkedListissä Javassa, koska paljon siirtymistä on tapahduttava, jos jokin elementti poistetaan taulukkoluettelosta.
- Emme voi luoda taulukkoa primitiivityypeistä, kuten int, float, char jne. Tällaisissa tapauksissa on käytettävä vaadittua wrapper-luokkaa. Esimerkiksi:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList alustetaan koon mukaan. Koko on dynaaminen taulukkoluettelossa, joka vaihtelee sen mukaan, mitä elementtejä lisätään tai poistetaan luettelosta.
ArrayList-luokan hierarkia
Kuten yllä olevasta kaaviosta näkyy, Java ArrayList -luokka laajentaa AbstractList-luokkaa, joka toteuttaa List-rajapinnan. List-käyttöliittymä laajentaa Kokoelma ja iteroitavat rajapinnat hierarkkisessa järjestyksessä.
ArrayList-luokkailmoitus
Katsotaanpa java.util.ArrayList-luokan ilmoitus.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
ArrayListin rakentajat
Rakentaja | Kuvaus |
---|---|
ArrayList() | Sitä käytetään tyhjän taulukkoluettelon rakentamiseen. |
ArrayList(kokoelma c) | Sitä käytetään muodostamaan taulukkoluettelo, joka alustetaan kokoelman c elementeillä. |
ArrayList (inttikapasiteetti) | Sitä käytetään muodostamaan taulukkoluettelo, jolla on määritetty alkukapasiteetti. |
ArrayListin menetelmät
Menetelmä | Kuvaus |
---|---|
mitätön lisätä (int indeksi, E-elementti) | Sitä käytetään määritetyn elementin lisäämiseen määritettyyn kohtaan luettelossa. |
boolean lisätä (Ja ja) | Sitä käytetään liittämään määritetty elementti luettelon loppuun. |
boolean addAll (kokoelma c) | Sitä käytetään liittämään kaikki määritetyn kokoelman elementit tämän luettelon loppuun siinä järjestyksessä, jossa määritetyn kokoelman iteraattori palauttaa ne. |
boolean addAll (int-indeksi, kokoelma c) | Sitä käytetään liittämään kaikki määritetyn kokoelman elementit luettelon määritetystä kohdasta alkaen. |
tyhjä tyhjä () | Sitä käytetään kaikkien elementtien poistamiseen tästä luettelosta. |
void varmistaaCapacity (int vaadittu kapasiteetti) | Sitä käytetään parantamaan ArrayList-ilmentymän kapasiteettia. |
E get(int index) | Sitä käytetään elementin hakemiseen luettelon tietystä paikasta. |
boolean isEmpty() | Se palauttaa tosi, jos lista on tyhjä, muuten false. |
Iteraattori() | |
listIterator() | |
int lastIndexOf(Object o) | Sitä käytetään palauttamaan indeksi tässä luettelossa määritetyn elementin viimeisestä esiintymisestä tai -1, jos luettelo ei sisällä tätä elementtiä. |
Object[] toArray() | Sitä käytetään palauttamaan taulukko, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä. |
T[] toArray(T[] a) | Sitä käytetään palauttamaan taulukko, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä. |
Objektin klooni() | Sitä käytetään palauttamaan matala kopio ArrayLististä. |
boolean sisältää (Objekti o) | Se palauttaa tosi, jos luettelo sisältää määritetyn elementin. |
int indexOf(objekti o) | Sitä käytetään palauttamaan indeksi tässä luettelossa määritetyn elementin ensimmäisestä esiintymisestä tai -1, jos luettelo ei sisällä tätä elementtiä. |
E poista (int index) | Sitä käytetään luettelon määritetyssä kohdassa olevan elementin poistamiseen. |
boolen poisto (objekti o) | Sitä käytetään määritetyn elementin ensimmäisen esiintymisen poistamiseen. |
boolean removeAll (kokoelma c) | Sitä käytetään kaikkien elementtien poistamiseen luettelosta. |
boolean removeIf (predikaattisuodatin) | Sitä käytetään poistamaan luettelosta kaikki elementit, jotka täyttävät annetun predikaatin. |
suojattu void removeRange (int fromIndex, in toIndex) | Sitä käytetään poistamaan kaikki elementit, jotka ovat annetulla alueella. |
tyhjä korvaa kaikki (UnaryOperator-operaattori) | Sitä käytetään korvaamaan kaikki luettelon elementit määritetyllä elementillä. |
mitätön säilyttää kaikki (kokoelma c) | Sitä käytetään säilyttämään kaikki luettelon elementit, jotka ovat määritetyssä kokoelmassa. |
E-joukko(int-indeksi, E-elementti) | Sitä käytetään korvaamaan luettelossa määritetty elementti, joka on määritetyssä paikassa. |
tyhjä lajittelu (vertailija c) | Sitä käytetään luettelon elementtien lajitteluun määritellyn vertailijan perusteella. |
Splitter spliterator() | Sitä käytetään luomaan jakaja luettelon elementtien päälle. |
Lista alilista(int fromIndex, int toIndex) | Sitä käytetään kaikkien annetulla alueella olevien elementtien hakemiseen. |
int size () | Sitä käytetään palauttamaan luettelossa olevien elementtien lukumäärä. |
void trimToSize() | Sitä käytetään tämän ArrayList-esiintymän kapasiteetin leikkaamiseen luettelon nykyiseen kokoon. |
Java Ei-yleinen vs. Yleinen kokoelma
Java-kokoelmakehys ei ollut yleinen ennen JDK 1.5:tä. Vuodesta 1.5 lähtien se on yleinen.
Java uusi yleinen kokoelma mahdollistaa vain yhden tyyppisen objektin kokoelmassa. Nyt se on tyyppiturvallinen, joten tyyppilähetystä ei vaadita suorituksen aikana.
python os -luettelohakemisto
Katsotaanpa vanhaa ei-yleistä esimerkkiä Java-kokoelman luomisesta.
ArrayList list=new ArrayList();//creating old non-generic arraylist
Katsotaanpa uusi yleinen esimerkki Java-kokoelman luomisesta.
ArrayList list=new ArrayList();//creating new generic arraylist
Yleisessä kokoelmassa määritämme tyypin kulmikasulkeissa. Nyt ArrayList pakottaa olemaan ainoa määritetty objektityyppi. Jos yrität lisätä toisen tyyppistä objektia, se antaa a käännösaikavirhe .
Saat lisätietoja Java-yleistuotteista napsauttamalla tätä Java Generics opetusohjelma .
Java ArrayList -esimerkki
Tiedoston nimi: 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); } }Testaa nyt
Lähtö:
[Mango, Apple, Banana, Grapes]
ArrayListin iterointi Iteratorilla
Katsotaanpa esimerkkiä ArrayList-elementtien kulkemisesta Iterator-rajapinnan avulla.
Tiedoston nimi: 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 } } }Testaa nyt
Lähtö:
Mango Apple Banana Grapes
ArrayListin iterointi For-each-silmukalla
Katsotaanpa esimerkkiä ArrayList-elementtien kulkemisesta for-each-silmukan avulla
Tiedoston nimi: 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); } }
Lähtö:
Testaa nytMango Apple Banana Grapes
Hanki ja aseta ArrayList
The get() -menetelmä palauttaa elementin määritetyssä indeksissä, kun taas set() -menetelmä muuttaa elementtiä.
Tiedoston nimi: 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); } }Testaa nyt
Lähtö:
python lajittelusanakirja
Returning element: Apple Mango Dates Banana Grapes
Kuinka lajitella ArrayList
The java.util paketti tarjoaa hyödyllisyysluokan Kokoelmat , jolla on staattinen menetelmä sort(). Käyttämällä Collections.sort() -menetelmällä voimme helposti lajitella ArrayListin.
Tiedoston nimi: 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); } }
Lähtö:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Tapoja iteroida kokoelman elementtejä Javassa
On olemassa useita tapoja kulkea kokoelmaelementtien läpi:
- Iterator-käyttöliittymällä.
- Jokaisen silmukan mukaan.
- ListIterator-käyttöliittymällä.
- by for loop.
- ForEach()-menetelmällä.
- ForEachRemaining()-menetelmällä.
Keräyksen toistaminen jäljellä olevilla tavoilla
Katsotaanpa esimerkkiä ArrayList-elementtien kulkemisesta muilla tavoilla
Tiedoston nimi: 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++)>
Lähtö:
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
Käyttäjän määrittämät luokkaobjektit Java ArrayListissä
Katsotaanpa esimerkkiä, jossa tallennamme opiskelijaluokan objektia taulukkoluetteloon.
Tiedoston nimi: 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); } } }
Lähtö:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Java ArrayList -serialisointi- ja deserialisointiesimerkki
Katsotaanpa esimerkkiä ArrayList-objektin sarjoittamiseksi ja sen sarjoittamiseksi.
Tiedoston nimi: 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); } } }
Lähtö:
[Ravi, Vijay, Ajay]
Java ArrayList -esimerkki elementtien lisäämiseksi
Tässä näemme erilaisia tapoja lisätä elementti.
Tiedoston nimi: ArrayList7.java
päämenetelmä java
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); } }
Lähtö:
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 -esimerkki elementtien poistamiseksi
Tässä näemme erilaisia tapoja poistaa elementti.
Tiedoston nimi: 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); } }
Lähtö:
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 esimerkki retainAll()-menetelmästä
Tiedoston nimi: 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()); } } }
Lähtö:
iterating the elements after retaining the elements of al2 Ravi
Java ArrayList esimerkki isEmpty()-menetelmästä
Tiedoston nimi: 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()); } }
Lähtö:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Java ArrayList Esimerkki: Kirja
Katsotaanpa ArrayList-esimerkkiä, jossa lisäämme kirjoja luetteloon ja tulostamme kaikki kirjat.
Tiedoston nimi: ArrayListExample20.java
Näyttelijä Rekha
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); } } }Testaa nyt
Lähtö:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
ArrayListin koko ja kapasiteetti
Matriisiluettelon koko ja kapasiteetti ovat kaksi termiä, jotka aloittelijat pitävät hämmentäviä. Ymmärretään se tässä osiossa joidenkin esimerkkien avulla. Harkitse seuraavaa koodinpätkää.
Tiedoston nimi: 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()); } }
Lähtö:
The size of the array is: 0
Selitys: Tulos on järkevä, koska emme ole tehneet mitään taulukkoluettelon kanssa. Tarkkaile nyt seuraavaa ohjelmaa.
Tiedoston nimi: 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()); } }
Lähtö:
The size of the array is: 0
Selitys: Näemme, että koko on edelleen 0, ja syy tähän on, että numero 10 edustaa kapasiteettia ei kokoa. Itse asiassa koko edustaa taulukossa olevien elementtien kokonaismäärää. Koska emme ole lisänneet yhtään elementtiä, taulukkoluettelon koko on nolla molemmissa ohjelmissa.
Kapasiteetti edustaa taulukkoluettelon sisältämien elementtien kokonaismäärää. Siksi taulukkoluettelon kapasiteetti on aina suurempi tai yhtä suuri kuin matriisiluettelon koko. Kun lisäämme elementin taulukkoluetteloon, se tarkistaa, onko taulukkoluettelon koko tullut yhtä suureksi kuin kapasiteetti vai ei. Jos kyllä, taulukkoluettelon kapasiteetti kasvaa. Joten yllä olevassa esimerkissä kapasiteetti on 10, kunnes 10 elementtiä lisätään luetteloon. Kun lisäämme 11thelementti, kapasiteetti kasvaa. Huomaa, että molemmissa esimerkeissä taulukkoluettelon kapasiteetti on 10. Ensimmäisessä tapauksessa kapasiteetti on 10, koska taulukkoluettelon oletuskapasiteetti on 10. Toisessa tapauksessa olemme nimenomaisesti maininneet, että taulukon kapasiteetti on lista on 10.
Huomautus: Ei ole olemassa standardimenetelmää, jolla kerrottaisiin, kuinka kapasiteetti kasvaa matriisiluettelossa. Itse asiassa tapa, jolla kapasiteetti kasvaa, vaihtelee GDK-versiosta toiseen. Siksi on tarkistettava, miten kapasiteetin lisäyskoodi on toteutettu GDK:ssa. ArrayList-luokassa ei ole mitään ennalta määritettyä menetelmää, joka palauttaa taulukkoluettelon kapasiteetin. Käytä siksi Vector-luokan capacity()-menetelmää ymmärtääksesi paremmin. ArrayList-luokassa ja Vector-luokassa koon ja kapasiteetin logiikka on sama.
Liittyvät aiheet
Kuinka lajitella ArrayList Javassa
Ero Arrayn ja ArrayListin välillä
Milloin ArrayListiä ja LinkedListiä käytetään Javassa
Ero ArrayListin ja LinkedListin välillä
Ero ArrayListin ja Vectorin välillä
Kuinka vertailla kahta ArrayListiä Javassa
Kuinka kääntää ArrayList Javassa
Milloin ArrayListiä ja LinkedListiä käytetään Javassa
Kuinka tehdä ArrayList vain luku -tilassa
Ero taulukon pituuden ja ArrayListin koon() välillä Javassa
Kuinka synkronoida ArrayList Javassa
Kuinka muuntaa ArrayList Arrayksi ja Array ArrayListiksi javassa
matriisi java-menetelmissä
Array vs ArrayList Javassa
Kuinka lajitella Java ArrayList laskevassa järjestyksessä
Kuinka poistaa kaksoiskappaleet ArrayLististä Javassa