Liste de tableaux personnalisée en Java

Liste de tableaux personnalisée en Java

Avant d'aller plus loin, révisons rapidement le concept de tableaux et Liste de tableaux rapidement. Ainsi, en Java, nous avons vu que les tableaux sont des structures de données linéaires fournissant des fonctionnalités permettant d'ajouter des éléments de manière continue dans l'espace d'adressage mémoire alors qu'ArrayList est une classe appartenant au framework Collection. En tant que bon programmeur, vous savez déjà utiliser ArrayList sur des tableaux, même si vous connaissez les différences entre ces deux éléments. Maintenant, même avec ArrayList, il existe une fonctionnalité permettant de transmettre le type de type de données des éléments qui sont censés être stockés dans ArrayList, qu'il s'agisse d'une chaîne d'objet entière, double flottant, etc. 

Syntaxe:

 Arraylist  al = new ArrayList  ;  

Note: ArrayList en Java (équivalent au vecteur en C++) ayant une taille dynamique. Il peut être réduit ou agrandi en fonction de sa taille. ArrayList fait partie du framework de collection et est présent dans paquet java.util

Syntaxe:

 ArrayList   list = new ArrayList  <> ();  

La chose importante ici est que E représente ici un type de données d'objet, imaginez-le Entier ici. La classe Integer encapsule une valeur du type primitif int dans un objet. Un objet de type Integer contient un seul champ dont le type est int. Parcourez le concept de cours d'emballage en Java avant d'aller de l'avant car il servira ici au backend, rendant la compréhension plus claire si nous sommes bien conscients de concepts d'autoboxing et de unboxing . En effet, lors de l'exécution d'opérations sur les éléments de la liste, leur syntaxe sera différente, donc la compréhension du concept s'épuisera, comme supposez un scénario d'ajout d'éléments à une ArrayList personnalisée et notez les différences de syntaxe entre deux d'entre eux. 

Syntaxe:

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

Syntaxe:

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

Prenons un exemple d'illustration pour percevoir comme indiqué ci-dessous comme suit :

Illustration:

Liste de tableaux personnalisée en Java

nous avons ici tous les éléments du même type que nous utilisons en général souvent. Proposons maintenant le même flux schématique, ArrayList prend simplement en charge plusieurs données de la manière indiquée dans cette image. 

Liste de tableaux personnalisée en Java


Dans l'ArrayList ci-dessus, nous pouvons clairement voir que les éléments stockés sont de types différents. Cela fait donc éclater le concept de restrictif. à un seul type et non seulement cette liste nous donne la flexibilité de créer une liste selon notre type où nous avons accès au type de types de données qui peuvent être présents dans notre ArrayList. Cette liste est appelée Custom ArrayList en Java . Une ArrayList personnalisée possède des attributs basés sur les besoins de l'utilisateur et peut contenir plusieurs types de données. Ces données sont fournies par une classe interne personnalisée formée par la combinaison de divers types de données d'objets primitifs.

Mise en œuvre: Prenons un cas où nous devons prendre en compte les entrées comme N le nombre d'étudiants et les détails sont : 

  • numéro de rôle
  • nom
  • marques
  • numéro de téléphone

Supposons que si nous ne connaissons pas le concept de liste de tableaux personnalisée en Java, nous créerions des listes de tableaux individuelles répertoriées ci-dessous. Comme nous définissons 4 ArrayLists et enregistrons les données en conséquence dans chacune d'elles.

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

Nous serions maintenant en train de parcourir chacun d'eux pour récupérer les données des étudiants, augmentant ainsi la complexité temporelle de notre programme, comme illustré ci-dessous.

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

Faisons maintenant de même avec l'aide du concept appris ci-dessus en le mettant en œuvre. Ainsi, afin de construire notre ArrayList personnalisée, effectuez les étapes ci-dessous comme suit :

Procédure: La construction d'une ArrayList personnalisée est la suivante :

  1. Créez un objet ArrayList et placez son type en tant que données de classe.
  2. Définissez une classe et placez les entités requises dans le constructeur.
  3. Liez ces entités à des variables globales.
  4. Les données reçues de ArrayList sont de ce type de classe qui stocke plusieurs données.

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

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

Une ArrayList personnalisée en Java peut être créée en étendant la classe java.util.AbstractList et en implémentant ses méthodes. Voici un exemple de la façon dont vous pouvez créer une ArrayList personnalisée :

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

Sortir
CustomArrayList: [1 2 3] 

Dans cet exemple, la ArrayList personnalisée est créée en étendant la classe AbstractList et en implémentant ses méthodes size get add et delete. L'ArrayList personnalisé possède également une méthode privée appelée EnsureCapacity qui double la taille de l'ArrayList si elle manque d'espace.

Avantages de l'utilisation d'une ArrayList personnalisée en Java :

  1. Flexibilité : la création d'une ArrayList personnalisée vous permet de personnaliser le comportement de l'ArrayList pour répondre aux besoins spécifiques de votre application.
  2. Compréhension : créer votre propre ArrayList à partir de zéro peut vous aider à comprendre comment fonctionnent les ArrayList et comment les utiliser efficacement.

Inconvénients de l'utilisation d'une ArrayList personnalisée en Java :

  1. Consommation de temps : la création d'une ArrayList personnalisée peut prendre du temps et nécessite une bonne

Créer un quiz