ArrayList personalitzat a Java

ArrayList personalitzat a Java

Abans de continuar, revisem ràpidament el concepte de matrius i ArrayList ràpidament. Així, a Java hem vist que les matrius són estructures de dades lineals que proporcionen funcionalitat per afegir elements de manera contínua a l'espai d'adreces de memòria, mentre que ArrayList és una classe que pertany al marc de col·lecció. En ser un bon programador, ja és conscient d'utilitzar ArrayList sobre matrius tot i conèixer les diferències entre aquests dos. Ara, fins i tot amb ArrayList, hi ha una funcionalitat per passar el tipus de tipus de dades d'elements que se suposa que s'emmagatzemen a la ArrayList, ja sigui una cadena d'objectes enteger doble flotant, etc. 

Sintaxi:

 Arraylist  al = new ArrayList  ;  

Nota: ArrayList en Java (equivalent a vector en C++) amb mida dinàmica. Es pot reduir o ampliar segons la mida. ArrayList és una part del marc de col·lecció i està present a paquet java.util



Sintaxi:

 ArrayList   list = new ArrayList  <> ();  

L'important aquí és que E aquí representa un tipus de dades d'objecte, siga Nombre sencer aquí. La classe Integer embolcalla un valor del tipus primitiu int en un objecte. Un objecte de tipus Integer conté un sol camp el tipus del qual és int. Passa pel concepte de classes d'embolcall en java abans d'avançar, ja que servirà aquí al backend fent que la comprensió sigui més clara si som ben conscients de conceptes d'autoboxing i unboxing . És perquè mentre es realitzen operacions sobre elements de la llista, la seva sintaxi diferirà, de manera que la comprensió del concepte s'esgotarà, ja que suposem que considerem un escenari d'afegir elements a ArrayList personalitzat i observeu les diferències de sintaxi entre dos d'ells. 

Sintaxi:

 ArrayList        al     = new Arraylist  () ;   
al.add(1) ;

Sintaxi:

 ArrayList      alobj     = new Arraylist() ;   
alobj(new Integer(1)) ;

Prenguem una il·lustració de mostra per percebre com es proporciona a continuació de la següent manera:

Il·lustració:

ArrayList personalitzat a Java

aquí estem tenint tots els elements del mateix tipus que en general fem servir sovint. Ara proposem que el mateix flux esquemàtic ArrayList simplement admet múltiples dades de la manera que es mostra en aquesta imatge. 

ArrayList personalitzat a Java


A la ArrayList anterior podem veure clarament que els elements que s'emmagatzemen són de diferents tipus. Així que esclata el concepte de restringint. a un sol tipus i no només aquesta llista ens dóna la flexibilitat de fer una llista segons el nostre tipus on tenim accés a quin tipus de tipus de dades hi pot haver a la nostra ArrayList. Aquesta llista s'anomena Custom ArrayList a java . Una ArrayList personalitzada té atributs basats en els requisits de l'usuari i pot tenir més d'un tipus de dades. Aquestes dades les proporciona una classe interna personalitzada que es forma per la combinació de diversos tipus de dades d'objectes primitius.

Implementació: Considereu un cas en què hem de prendre entrada com a N nombre d'alumnes i detalls són: 

  • número de rotlle
  • nom
  • marques
  • número de telèfon

Suposem que si desconeixem el concepte de llista de matrius personalitzada a Java, farem les llistes de matrius individuals que es mostren a continuació. Com definim 4 ArrayLists i desem les dades en conseqüència en cadascuna d'elles.

 ArrayList   roll = new ArrayList <>(); // roll number  
  ArrayList  name = new ArrayList <>(); // name  
 ArrayList   marks = new ArrayList <>(); // marks  
 ArrayList  phone = new ArrayList <>(); // phone number   

Ara repetiríem cadascun d'ells per obtenir dades dels estudiants augmentant la complexitat temporal del nostre programa en major mesura, tal com s'il·lustra a continuació.

 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);
}

Ara fem el mateix amb l'ajuda del concepte après anteriorment implementant el mateix. Per tant, per construir la nostra ArrayList personalitzada, realitzeu els passos que s'indiquen a continuació:

Procediment: La construcció de ArrayList personalitzada és la següent:

  1. Creeu un objecte ArrayList i col·loqueu-ne el tipus com a dades de classe.
  2. Definiu una classe i poseu les entitats requerides al constructor.
  3. Vinculeu aquestes entitats a variables globals.
  4. Les dades rebudes de la ArrayList són d'aquest tipus de classe que emmagatzema múltiples dades.

Exemple

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  );      }   }   

Sortida
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384 

Es pot crear una ArrayList personalitzada en Java ampliant la classe java.util.AbstractList i implementant els seus mètodes. Aquí teniu un exemple de com podeu crear una ArrayList personalitzada:

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  );      }   }   

Sortida
CustomArrayList: [1 2 3] 

En aquest exemple, la ArrayList personalitzada es crea ampliant la classe AbstractList i implementant els seus mètodes size get add and remove. La ArrayList personalitzada també té un mètode privat anomenat assureCapacity que duplica la mida de la ArrayList si es queda sense espai.

Avantatges d'utilitzar una ArrayList personalitzada a Java:

  1. Flexibilitat: la creació d'una ArrayList personalitzada us permet personalitzar el comportament de la ArrayList per satisfer les necessitats específiques de la vostra aplicació.
  2. Comprensió: crear la vostra pròpia ArrayList des de zero us pot ajudar a entendre com funcionen les ArrayLists i com utilitzar-les de manera eficaç.

Desavantatges d'utilitzar una ArrayList personalitzada a Java:

  1. Consum de temps: la creació d'una ArrayList personalitzada pot consumir temps i requereix un bé

Crea un qüestionari

Articles Més Populars

Categoria

Articles D'Interès