ArrayList po meri v Javi

ArrayList po meri v Javi

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. 

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:

 ArrayList        al     = 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:

ArrayList po meri v Javi

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. 

ArrayList po meri v Javi


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:

Postopek: Konstruiranje ArrayList po meri je naslednje:

  1. Zgradite objekt ArrayList in postavite njegov tip kot podatke razreda.
  2. Definirajte razred in vstavite zahtevane entitete v konstruktor.
  3. Povežite te entitete z globalnimi spremenljivkami.
  4. 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:

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

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:

  1. Prilagodljivost: Ustvarjanje seznama ArrayList po meri vam omogoča, da prilagodite vedenje seznama ArrayList, da ustreza posebnim potrebam vaše aplikacije.
  2. 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:

  1. Poraba časa: Ustvarjanje seznama ArrayList po meri je lahko dolgotrajno in zahteva dobro

Ustvari kviz