logo

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:

desar el vídeo de youtube vlc
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.

plsql

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

comptador java
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