Цустом АрраиЛист у Јави

Цустом АрраиЛист у Јави

Пре него што наставимо даље, хајде да брзо ревидирамо концепт низови и АрраиЛист брзо. Дакле, у Јави смо видели да су низови линеарне структуре података које пружају функционалност за континуирано додавање елемената у меморијски адресни простор, док је АрраиЛист класа која припада оквиру колекције. Будући да сте добар програмер, већ сте свесни коришћења АрраиЛист-а преко низова упркос томе што знамо разлике између ова два. Сада идемо напред чак и са АрраиЛист-ом, долази до функционалности за преношење типа типа података елемената који би требало да се чувају у АрраиЛист-у, било да се ради о целобројном низу објеката са двоструким плутањем итд. 

Синтакса:

 Arraylist  al = new ArrayList  ;  

Напомена: АрраиЛист у Јави (еквивалент вектору у Ц++) има динамичку величину. Може се смањити или проширити у зависности од величине. АрраиЛист је део оквира за прикупљање и присутан је у јава.утил пакет

Синтакса:

 ArrayList   list = new ArrayList  <> ();  

Важна ствар овде је да Е овде представља тип података објекта, замислите било шта Интегер овде. Класа Интегер обавија вредност примитивног типа инт у објекту. Објекат типа Интегер садржи једно поље чији је тип инт. Прођите кроз концепт класе омотача у Јави пре него што кренемо напред јер ће служити овде као позадину чинећи разумевање јаснијим ако смо тога добро свесни концепти аутобоксовања и распакивања . То је зато што ће се током извођења операција над елементима на листи њихова синтакса разликовати, па ће се схватање концепта исцрпити, јер претпоставимо да размотримо сценарио додавања елемената прилагођеној АрраиЛист и забележимо разлике у синтакси између два од њих. 

Синтакса:

 ArrayList        al     = 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);
}

Сада урадимо исто уз помоћ концепта наученог изнад имплементацијом истог. Дакле, да бисте направили нашу прилагођену листу АрраиЛист, извршите доле наведене кораке на следећи начин:

Процедура: Конструкција прилагођене листе АрраиЛист је следећа:

  1. Направите објекат АрраиЛист и поставите његов тип као Цласс Дата.
  2. Дефинишите класу и ставите потребне ентитете у конструктор.
  3. Повежите те ентитете са глобалним варијаблама.
  4. Подаци примљени из АрраиЛист су оног типа класе који чува више података.

Пример

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 

Прилагођена листа АрраиЛист у Јави може се креирати проширењем класе јава.утил.АбстрацтЛист и имплементацијом њених метода. Ево примера како можете да креирате прилагођену листу АрраиЛист:

Java
   import     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] 

У овом примеру прилагођени АрраиЛист је креиран проширењем класе АбстрацтЛист и имплементацијом његових метода сизе гет адд и ремове. Прилагођена листа АрраиЛист такође има приватну методу која се зове осигурањеЦапацити која удвостручује величину АрраиЛист ако јој понестане простора.

Предности коришћења прилагођене АрраиЛист у Јави:

  1. Флексибилност: Креирање прилагођеног АрраиЛист-а вам омогућава да прилагодите понашање АрраиЛист-а тако да задовољи специфичне потребе ваше апликације.
  2. Разумевање: Креирање сопствене АрраиЛист од нуле може вам помоћи да разумете како функционишу АрраиЛистс и како да их ефикасно користите.

Недостаци коришћења прилагођене АрраиЛист у Јави:

  1. Потрошња времена: Креирање прилагођене АрраиЛист може бити дуготрајно и захтева добро

Креирај квиз