Цустом АрраиЛист у Јави
Пре него што наставимо даље, хајде да брзо ревидирамо концепт низови и АрраиЛист брзо. Дакле, у Јави смо видели да су низови линеарне структуре података које пружају функционалност за континуирано додавање елемената у меморијски адресни простор, док је АрраиЛист класа која припада оквиру колекције. Будући да сте добар програмер, већ сте свесни коришћења АрраиЛист-а преко низова упркос томе што знамо разлике између ова два. Сада идемо напред чак и са АрраиЛист-ом, долази до функционалности за преношење типа типа података елемената који би требало да се чувају у АрраиЛист-у, било да се ради о целобројном низу објеката са двоструким плутањем итд.
Синтакса:
Arraylistal = new ArrayList ; Напомена: АрраиЛист у Јави (еквивалент вектору у Ц++) има динамичку величину. Може се смањити или проширити у зависности од величине. АрраиЛист је део оквира за прикупљање и присутан је у јава.утил пакет .
Синтакса:
ArrayListlist = new ArrayList <> (); Важна ствар овде је да Е овде представља тип података објекта, замислите било шта Интегер овде. Класа Интегер обавија вредност примитивног типа инт у објекту. Објекат типа Интегер садржи једно поље чији је тип инт. Прођите кроз концепт класе омотача у Јави пре него што кренемо напред јер ће служити овде као позадину чинећи разумевање јаснијим ако смо тога добро свесни концепти аутобоксовања и распакивања . То је зато што ће се током извођења операција над елементима на листи њихова синтакса разликовати, па ће се схватање концепта исцрпити, јер претпоставимо да размотримо сценарио додавања елемената прилагођеној АрраиЛист и забележимо разлике у синтакси између два од њих.
Синтакса:
ArrayListal = new Arraylist () ;
al.add(1) ;Синтакса:
ArrayList alobj = new Arraylist() ;
alobj(new Integer(1)) ;Узмимо пример илустрације да видимо како је наведено у наставку:
Илустрација:
![]()
овде имамо све елементе истог типа које генерално често користимо. Сада хајде да предложимо исти дијаграмски ток АрраиЛист једноставно подржава више података на начин приказан на овој слици.
![]()
У горњој АрраиЛист можемо јасно видети да су елементи који су ускладиштени у различитим типовима. Дакле, избија концепт ограничавајући. на један тип, а не само ова листа, нам даје флексибилност да направимо Листу према нашем типу где имамо приступ томе које врсте података могу бити тамо у нашој АрраиЛист. Ова листа се у Јави назива Цустом АрраиЛист . Прилагођени АрраиЛист има атрибуте засноване на захтевима корисника и може да има више од једне врсте података. Ове податке обезбеђује прилагођена унутрашња класа која је формирана комбинацијом различитих примитивних типова података објеката.Имплементација: Размотримо случај када морамо да узмемо унос као Н број ученика и детаљи су:
- број ролне
- име
- ознаке
- број телефона
Претпоставимо да ако нисмо свесни концепта прилагођене листе низова у Јави, онда бисмо направили доле наведене појединачне листе низова. Као што дефинишемо 4 АрраиЛистс и у складу са тим чувамо податке у свакој од њих.
ArrayListroll = new ArrayList <>(); // roll number ArrayListname = new ArrayList <>(); // name ArrayListmarks = new ArrayList <>(); // marks ArrayListphone = 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]У овом примеру прилагођени АрраиЛист је креиран проширењем класе АбстрацтЛист и имплементацијом његових метода сизе гет адд и ремове. Прилагођена листа АрраиЛист такође има приватну методу која се зове осигурањеЦапацити која удвостручује величину АрраиЛист ако јој понестане простора.
Предности коришћења прилагођене АрраиЛист у Јави:
- Флексибилност: Креирање прилагођеног АрраиЛист-а вам омогућава да прилагодите понашање АрраиЛист-а тако да задовољи специфичне потребе ваше апликације.
- Разумевање: Креирање сопствене АрраиЛист од нуле може вам помоћи да разумете како функционишу АрраиЛистс и како да их ефикасно користите.
Недостаци коришћења прилагођене АрраиЛист у Јави:
- Потрошња времена: Креирање прилагођене АрраиЛист може бити дуготрајно и захтева добро
Креирај квиз