Java'da Özel ArrayList

Java'da Özel ArrayList

Daha fazla ilerlemeden önce kavramı hızla gözden geçirelim. diziler Ve Dizi Listesi hızlıca. Java'da dizilerin, bellek adres alanına sürekli bir şekilde öğe ekleme işlevselliği sağlayan doğrusal veri yapıları olduğunu, ArrayList'in ise Koleksiyon çerçevesine ait bir sınıf olduğunu gördük. İyi bir programcı olmak, bu ikisi arasındaki farkları bilmesine rağmen ArrayList'i diziler üzerinde kullanmanın zaten farkındadır. Artık ArrayList ile bile ilerlemeye devam edersek, ArrayList'te saklanması gereken öğelerin veri türü türünü iletmek için bir işlevsellik gelir; bu, bir nesne dizesi tamsayı çift kayan nokta vb. olabilir. 

Sözdizimi:

 Arraylist  al = new ArrayList  ;  

Not: Java'daki ArrayList (C++'daki vektöre eşdeğerdir) dinamik boyuta sahiptir. Boyutuna göre küçültülebilir veya genişletilebilir. ArrayList, koleksiyon çerçevesinin bir parçasıdır ve java.util paketi

Sözdizimi:

 ArrayList   list = new ArrayList  <> ();  

Burada önemli olan E'nin burada hayal edebileceğiniz bir nesne veri tipini temsil etmesidir Tamsayı Burada. Integer sınıfı ilkel türden bir değeri sarar int bir nesnede. Tamsayı türündeki bir nesne, türü int olan tek bir alan içerir. Kavramının üzerinden geçin sarmalayıcı sınıfları Java'da ilerlemeden önce burada arka uçta hizmet verecek ve eğer iyi biliyorsak anlayışı daha net hale getirecek Otomatik kutulama ve kutudan çıkarma kavramları . Bunun nedeni, listedeki öğeler üzerinde işlemler gerçekleştirirken sözdizimlerinin farklı olacağı ve bu nedenle, özel ArrayList'e öğe ekleme senaryosunu göz önünde bulundurduğunuz ve ikisi arasındaki sözdizimi farklılıklarına dikkat ettiğiniz için kavramı kavramanın tükeneceğidir. 

Sözdizimi:

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

Sözdizimi:

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

Aşağıdaki gibi algılamak için örnek bir çizimi ele alalım:

İllüstrasyon:

Java

burada genel olarak sıklıkla kullandığımız aynı tipteki tüm unsurlara sahibiz. Şimdi aynı diyagramatik akışı önerelim ArrayList bu görüntüde gösterildiği gibi basitçe birden fazla veriyi destekler. 

Java


Yukarıdaki ArrayList'te depolanan elemanların farklı türde olduğunu açıkça görebiliriz. Yani şu kavramı ortaya çıkarıyor: kısıtlayıcı. tek bir türe gitmekle kalmaz, yalnızca bu Liste bize ArrayList'imizde ne tür veri türlerinin bulunabileceğine erişebildiğimiz türümüze göre Liste yapma esnekliği sağlar. Bu Listeye Java'da Özel ArrayList adı verilir. . Özel bir ArrayList'in kullanıcı gereksinimlerine dayalı özellikleri vardır ve birden fazla veri türüne sahip olabilir. Bu veriler, çeşitli ilkel nesne veri türlerinin birleşimiyle oluşturulan özel bir iç sınıf tarafından sağlanır.

Uygulama: Girdiyi şu şekilde almamız gereken bir durumu düşünün: N öğrenci sayısı ve detayları şöyle: 

  • rulo numarası
  • isim
  • işaretler
  • telefon numarası

Java'daki özel Arraylist kavramından habersizsek, aşağıda listelenen bireysel ArrayList'leri yapacağımızı varsayalım. 4 ArrayList tanımlayıp her birine uygun şekilde veri kaydediyoruz.

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

Şimdi aşağıda gösterildiği gibi programımızın zaman karmaşıklığını daha büyük ölçüde artırarak öğrenci verilerini getirmek için her birinin üzerinde yineleme yapacağız.

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

Şimdi yukarıda öğrendiğimiz kavramın yardımıyla aynısını uygulayarak yapalım. Özel ArrayList'imizi oluşturmak için aşağıda listelenen adımları aşağıdaki gibi gerçekleştirin:

Prosedür: Özel ArrayList'in oluşturulması aşağıdaki gibidir:

  1. Bir ArrayList Nesnesi oluşturun ve türünü Sınıf Verisi olarak yerleştirin.
  2. Bir sınıf tanımlayın ve gerekli varlıkları yapıcıya yerleştirin.
  3. Bu varlıkları global değişkenlere bağlayın.
  4. ArrayList'ten alınan veriler, birden fazla veriyi depolayan sınıf türündedir.

Örnek

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

Çıkış
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384 

Java'da özel bir ArrayList, java.util.AbstractList sınıfı genişletilerek ve yöntemleri uygulanarak oluşturulabilir. Özel bir ArrayList'i nasıl oluşturabileceğinize dair bir örnek:

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

Çıkış
CustomArrayList: [1 2 3] 

Bu örnekte özel ArrayList, AbstractList sınıfının genişletilmesi ve onun boyut ekleme ve kaldırma yöntemlerinin uygulanmasıyla oluşturulur. Özel ArrayList ayrıca, alanı biterse ArrayList'in boyutunu iki katına çıkaran,sureCapacity adında özel bir yönteme sahiptir.

Java'da özel bir ArrayList kullanmanın avantajları:

  1. Esneklik: Özel bir ArrayList oluşturmak, ArrayList'in davranışını uygulamanızın özel ihtiyaçlarını karşılayacak şekilde özelleştirmenize olanak tanır.
  2. Anlamak: Kendi ArrayList'inizi sıfırdan oluşturmak, ArrayList'lerin nasıl çalıştığını ve onları nasıl etkili bir şekilde kullanacağınızı anlamanıza yardımcı olabilir.

Java'da özel bir ArrayList kullanmanın dezavantajları:

  1. Zaman tüketimi: Özel bir ArrayList oluşturmak zaman alabilir ve iyi bir

Test Oluştur