Пре него што наставимо даље, хајде да брзо ревидирамо концепт низови и АрраиЛист брзо. Дакле, у Јави смо видели да су низови линеарне структуре података које пружају функционалност за континуирано додавање елемената у меморијски адресни простор, док је АрраиЛист класа која припада оквиру колекције. Будући да сте добар програмер, већ сте свесни коришћења АрраиЛист-а преко низова упркос томе што знамо разлике између ова два. Сада идемо напред чак и са АрраиЛист-ом, долази до функционалности за преношење типа типа података елемената који би требало да се чувају у АрраиЛист-у, било да се ради о целобројном низу објеката са двоструким плутањем итд.
Синтакса:
Arraylist al = new ArrayList ; Напомена: АрраиЛист у Јави (еквивалент вектору у Ц++) има динамичку величину. Може се смањити или проширити у зависности од величине. АрраиЛист је део оквира за прикупљање и присутан је у јава.утил пакет .
Синтакса:
ArrayList list = new ArrayList <> (); Важна ствар овде је да Е овде представља тип података објекта, замислите било шта Интегер овде. Класа Интегер обавија вредност примитивног типа инт у објекту. Објекат типа Интегер садржи једно поље чији је тип инт. Прођите кроз концепт класе омотача у Јави пре него што кренемо напред јер ће служити овде као позадину чинећи разумевање јаснијим ако смо тога добро свесни концепти аутобоксовања и распакивања . То је зато што ће се током извођења операција над елементима на листи њихова синтакса разликовати, па ће се схватање концепта исцрпити, јер претпоставимо да размотримо сценарио додавања елемената прилагођеној АрраиЛист и забележимо разлике у синтакси између два од њих.
онемогућите режим програмера
Синтакса:
ArrayListal = new Arraylist () ;
al.add(1) ;
Синтакса:
ArrayList alobj = new Arraylist() ;
alobj(new Integer(1)) ;
Узмимо пример илустрације да видимо како је наведено у наставку:
Илустрација:

цоллецтион јава
овде имамо све елементе истог типа које генерално често користимо. Сада хајде да предложимо исти дијаграмски ток АрраиЛист једноставно подржава више података на начин приказан на овој слици.

У горњој АрраиЛист можемо јасно видети да су елементи који су ускладиштени у различитим типовима. Дакле, избија концепт ограничавајући. на један тип, а не само ова листа, нам даје флексибилност да направимо Листу према нашем типу где имамо приступ томе које врсте података могу бити тамо у нашој АрраиЛист. Ова листа се у Јави назива Цустом АрраиЛист . Прилагођени АрраиЛист има атрибуте засноване на захтевима корисника и може да има више од једне врсте података. Ове податке обезбеђује прилагођена унутрашња класа која је формирана комбинацијом различитих примитивних типова података објеката.
Имплементација: Размотримо случај када морамо да узмемо унос као Н број ученика и детаљи су:
- број ролне
- име
- ознаке
- број телефона
Претпоставимо да ако нисмо свесни концепта прилагођене листе низова у Јави, онда бисмо направили доле наведене појединачне листе низова. Као што дефинишемо 4 АрраиЛистс и у складу са тим чувамо податке у свакој од њих.
ArrayList roll = new ArrayList<>(); // roll number ArrayList name = new ArrayList<>(); // name ArrayList marks = new ArrayList<>(); // marks ArrayList phone = new ArrayList<>(); // phone number Сада бисмо понављали сваки од њих да бисмо дохватили податке о ученицима, што би у већој мери повећало временску сложеност нашег програма, као што је илустровано у наставку како следи.
подебљано у цсс-у
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);
}
Сада урадимо исто уз помоћ концепта наученог изнад имплементацијом истог. Дакле, да бисте направили нашу прилагођену листу АрраиЛист, извршите доле наведене кораке на следећи начин:
Процедура: Конструкција прилагођене листе АрраиЛист је следећа:
- Направите објекат АрраиЛист и поставите његов тип као Цласс Дата.
- Дефинишите класу и ставите потребне ентитете у конструктор.
- Повежите те ентитете са глобалним варијаблама.
- Подаци примљени из АрраиЛист су оног типа класе који чува више података.
Пример
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); } }
Излаз
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384
Прилагођена листа АрраиЛист у Јави може се креирати проширењем класе јава.утил.АбстрацтЛист и имплементацијом њених метода. Ево примера како можете да креирате прилагођену листу АрраиЛист:
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); } }
Излаз
CustomArrayList: [1 2 3]
У овом примеру прилагођени АрраиЛист је креиран проширењем класе АбстрацтЛист и имплементацијом његових метода сизе гет адд и ремове. Прилагођена листа АрраиЛист такође има приватну методу која се зове осигурањеЦапацити која удвостручује величину АрраиЛист ако јој понестане простора.
Предности коришћења прилагођене АрраиЛист у Јави:
- Флексибилност: Креирање прилагођеног АрраиЛист-а вам омогућава да прилагодите понашање АрраиЛист-а тако да задовољи специфичне потребе ваше апликације.
- Разумевање: Креирање сопствене АрраиЛист од нуле може вам помоћи да разумете како функционишу АрраиЛистс и како да их ефикасно користите.
Недостаци коришћења прилагођене АрраиЛист у Јави:
- Потрошња времена: Креирање прилагођене АрраиЛист може бити дуготрајно и захтева добро
Креирај квиз