Preden nadaljujemo, na hitro pregledajmo koncept nizi in ArrayList hitro. Tako smo v Javi videli, da so polja linearne podatkovne strukture, ki zagotavljajo funkcionalnost za neprekinjeno dodajanje elementov v pomnilniški naslovni prostor, medtem ko je ArrayList razred, ki pripada ogrodju Collection. Ker ste dober programer, se že zavedate uporabe ArrayList nad nizi, čeprav poznate razlike med tema dvema. Zdaj gremo naprej, tudi z ArrayList, obstaja funkcija za posredovanje vrste podatkovnega tipa elementov, ki naj bi bili shranjeni v ArrayList, naj bo to celoštevilski niz objekta z dvojnim plavajočim nizom itd.
kako pridobiti skrite aplikacije
Sintaksa:
Arraylist al = new ArrayList ; Opomba: ArrayList v Javi (enakovredno vektorju v C++) ima dinamično velikost. Lahko se zmanjša ali razširi glede na velikost. ArrayList je del ogrodja zbirke in je prisoten v paket java.util .
Sintaksa:
ArrayList list = new ArrayList <> (); Pomembna stvar tukaj je, da E tukaj predstavlja objektni podatkovni tip, če si ga predstavljate Celo število tukaj Razred Integer ovije vrednost primitivnega tipa int v objektu. Objekt tipa Integer vsebuje eno polje, katerega tip je int. Pojdite skozi koncept ovojni razredi v javi, preden gremo naprej, saj bo služil tukaj v ozadju, da bo razumevanje jasnejše, če se dobro zavedamo koncepta autoboxing in unboxing . To je zato, ker se bo med izvajanjem operacij nad elementi na seznamu njihova sintaksa razlikovala, zato bo dojemanje koncepta oslabljeno, kot predpostavimo, da razmislimo o scenariju dodajanja elementov v ArrayList po meri in upoštevamo razlike v sintaksi med njima.
Sintaksa:
ArrayListal = new Arraylist () ;
al.add(1) ;
Sintaksa:
ArrayList alobj = new Arraylist() ;
alobj(new Integer(1)) ;
Vzemimo vzorčno ilustracijo za zaznavanje, kot je navedeno spodaj, kot sledi:
Ilustracija:

tukaj imamo vse elemente iste vrste, ki jih na splošno pogosto uporabljamo. Predlagajmo zdaj enak diagramski tok. ArrayList preprosto podpira več podatkov na način, prikazan na tej sliki.
primeri operacijskega sistema

V zgornjem seznamu ArrayList lahko jasno vidimo, da so shranjeni elementi različnih vrst. Torej izbruhne koncept omejevanje. na en sam tip in ne samo na ta seznam, nam daje prilagodljivost, da naredimo seznam glede na naš tip, kjer imamo dostop do tega, kateri podatkovni tipi so lahko v našem ArrayList. Ta seznam se v Javi imenuje Custom ArrayList . ArrayList po meri ima atribute, ki temeljijo na zahtevah uporabnika, in ima lahko več kot eno vrsto podatkov. Te podatke zagotavlja notranji razred po meri, ki je oblikovan s kombinacijo različnih podatkovnih tipov primitivnih objektov.
Izvedba: Razmislite o primeru, ko moramo vzeti vnos kot n število študentov in podatki so:
- številka zvitka
- ime
- oznake
- telefonsko številko
Recimo, da če ne poznamo koncepta Arraylist po meri v Javi, potem bi naredili spodaj navedene posamezne ArrayListe. Ker definiramo 4 sezname ArrayLists in v vsakega od njih ustrezno shranimo podatke.
ArrayList roll = new ArrayList<>(); // roll number ArrayList name = new ArrayList<>(); // name ArrayList marks = new ArrayList<>(); // marks ArrayList phone = new ArrayList<>(); // phone number Zdaj bi ponavljali vsakega od njih, da bi pridobili podatke študentov, kar bi povečalo časovno kompleksnost našega programa, kot je prikazano spodaj, kot sledi.
for (int i = 0; i < n; i++)
{
// Adding all the values to each arraylist
// each arraylist has primitive datatypes
roll.add(rollnum_i);
name.add(name_i);
marks.add(marks_i);
phone.add(phone_i);
}
Zdaj pa naredimo isto s pomočjo koncepta, ki smo se ga naučili zgoraj, z implementacijo istega. Če želite sestaviti naš ArrayList po meri, izvedite spodnje korake, kot sledi:
java vhodni niz
Postopek: Konstruiranje ArrayList po meri je naslednje:
- Zgradite objekt ArrayList in postavite njegov tip kot podatke razreda.
- Definirajte razred in vstavite zahtevane entitete v konstruktor.
- Povežite te entitete z globalnimi spremenljivkami.
- Podatki, prejeti iz ArrayList, so tiste vrste razreda, ki hrani več podatkov.
Primer
Java// Java program to illustrate Custom ArrayList // Importing ArrayList class from java.util package import java.util.ArrayList; // Class 1 // Outer class // Main class // CustomArrayList class Data { // Global variables of the class int roll; String name; int marks; long phone; // Constructor has type of data that is required Data(int roll String name int marks long phone) { // Initialize the input variable from main // function to the global variable of the class // this keyword refers to current instance this.roll = roll; this.name = name; this.marks = marks; this.phone = phone; } } public class GFG { // Custom class which has data type class has // defined the type of data ArrayList // size of input 4 int n = 4; // Class 2 // Inner class // The custom datatype class public void addValues(int roll[] String name[] int marks[] long phone[]) { // local custom arraylist of data type // Data having (int String int long) type // from the class ArrayList<Data> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // create an object and send values to the // constructor to be saved in the Data class list.add(new Data(roll[i] name[i] marks[i] phone[i])); } // after adding values printing the values to // test the custom arraylist printValues(list); } // Method 2 // To print the values public void printValues(ArrayList<Data> list) { // list- the custom arraylist is sent from // previous function for (int i = 0; i < n; i++) { // Data received from arraylist is of Data // type which is custom (int String int // long) based on class Data Data data = list.get(i); // Print and display custom ArrayList // elements that holds for student attribute // Data variable of type Data has four // primitive datatypes roll -int name- // String marks- int phone- long System.out.println(data.roll + ' ' + data.name + ' ' + data.marks + ' ' + data.phone); } } // Method 1 // Main driver method public static void main(String args[]) { // Custom input data int roll[] = { 1 2 3 4 }; String name[] = { 'Shubham' 'Atul' 'Ayush' 'Rupesh' }; int marks[] = { 100 99 93 94 }; long phone[] = { 8762357381L 8762357382L 8762357383L 8762357384L }; // Creating an object of the class GFG custom = new GFG(); // Now calling function to add the values to the // arraylist custom.addValues(roll name marks phone); } }
Izhod
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384
ArrayList po meri v Javi je mogoče ustvariti z razširitvijo razreda java.util.AbstractList in implementacijo njegovih metod. Tukaj je primer, kako lahko ustvarite ArrayList po meri:
Javaimport java.util.AbstractList; import java.util.Arrays; import java.util.List; public class CustomArrayList<E> extends AbstractList<E> { private int size = 0; private static final int DEFAULT_CAPACITY = 10; private Object elements[]; public CustomArrayList() { elements = new Object[DEFAULT_CAPACITY]; } public CustomArrayList(int capacity) { elements = new Object[capacity]; } @Override public int size() { return size; } @Override public E get(int index) { if (index >= size || index < 0) { throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index); } return (E) elements[index]; } @Override public void add(int index E element) { if (index > size || index < 0) { throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index); } ensureCapacity(); for (int i = size - 1; i >= index; i--) { elements[i + 1] = elements[i]; } elements[index] = element; size++; } @Override public E remove(int index) { if (index >= size || index < 0) { throw new IndexOutOfBoundsException('Index: ' + index + ' Size ' + index); } Object item = elements[index]; for (int i = index; i < size - 1; i++) { elements[i] = elements[i + 1]; } size--; return (E) item; } private void ensureCapacity() { int newSize = elements.length * 2; elements = Arrays.copyOf(elements newSize); } public static void main(String[] args) { List<Integer> list = new CustomArrayList<>(); list.add(1); list.add(2); list.add(3); System.out.println('CustomArrayList: ' + list); } }
Izhod
CustomArrayList: [1 2 3]
V tem primeru je ArrayList po meri ustvarjen z razširitvijo razreda AbstractList in implementacijo njegovih metod size get add in remove. ArrayList po meri ima tudi zasebno metodo, imenovano secureCapacity, ki podvoji velikost ArrayList, če zmanjka prostora.
Prednosti uporabe ArrayList po meri v Javi:
- Prilagodljivost: Ustvarjanje seznama ArrayList po meri vam omogoča, da prilagodite vedenje seznama ArrayList, da ustreza posebnim potrebam vaše aplikacije.
- Razumevanje: Ustvarjanje lastnega seznama ArrayList iz nič vam lahko pomaga razumeti, kako delujejo seznami ArrayList in kako jih učinkovito uporabljati.
Slabosti uporabe ArrayList po meri v Javi:
- Poraba časa: Ustvarjanje seznama ArrayList po meri je lahko dolgotrajno in zahteva dobro
Ustvari kviz