logo

Цустом АрраиЛист у Јави

Пре него што наставимо даље, хајде да брзо ревидирамо концепт низови и АрраиЛист брзо. Дакле, у Јави смо видели да су низови линеарне структуре података које пружају функционалност за континуирано додавање елемената у меморијски адресни простор, док је АрраиЛист класа која припада оквиру колекције. Будући да сте добар програмер, већ сте свесни коришћења АрраиЛист-а преко низова упркос томе што знамо разлике између ова два. Сада идемо напред чак и са АрраиЛист-ом, долази до функционалности за преношење типа типа података елемената који би требало да се чувају у АрраиЛист-у, било да се ради о целобројном низу објеката са двоструким плутањем итд. 

Синтакса:

Arraylist al = new ArrayList ;

Напомена: АрраиЛист у Јави (еквивалент вектору у Ц++) има динамичку величину. Може се смањити или проширити у зависности од величине. АрраиЛист је део оквира за прикупљање и присутан је у јава.утил пакет



Синтакса:

ArrayList  list = new ArrayList <> ();

Важна ствар овде је да Е овде представља тип података објекта, замислите било шта Интегер овде. Класа Интегер обавија вредност примитивног типа инт у објекту. Објекат типа Интегер садржи једно поље чији је тип инт. Прођите кроз концепт класе омотача у Јави пре него што кренемо напред јер ће служити овде као позадину чинећи разумевање јаснијим ако смо тога добро свесни концепти аутобоксовања и распакивања . То је зато што ће се током извођења операција над елементима на листи њихова синтакса разликовати, па ће се схватање концепта исцрпити, јер претпоставимо да размотримо сценарио додавања елемената прилагођеној АрраиЛист и забележимо разлике у синтакси између два од њих. 

онемогућите режим програмера

Синтакса:

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

Синтакса:

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

Узмимо пример илустрације да видимо како је наведено у наставку:

Илустрација:

Цустом АрраиЛист у Јави

цоллецтион јава

овде имамо све елементе истог типа које генерално често користимо. Сада хајде да предложимо исти дијаграмски ток АрраиЛист једноставно подржава више података на начин приказан на овој слици. 

Цустом АрраиЛист у Јави


У горњој АрраиЛист можемо јасно видети да су елементи који су ускладиштени у различитим типовима. Дакле, избија концепт ограничавајући. на један тип, а не само ова листа, нам даје флексибилност да направимо Листу према нашем типу где имамо приступ томе које врсте података могу бити тамо у нашој АрраиЛист. Ова листа се у Јави назива Цустом АрраиЛист . Прилагођени АрраиЛист има атрибуте засноване на захтевима корисника и може да има више од једне врсте података. Ове податке обезбеђује прилагођена унутрашња класа која је формирана комбинацијом различитих примитивних типова података објеката.

Имплементација: Размотримо случај када морамо да узмемо унос као Н број ученика и детаљи су: 

  • број ролне
  • име
  • ознаке
  • број телефона

Претпоставимо да ако нисмо свесни концепта прилагођене листе низова у Јави, онда бисмо направили доле наведене појединачне листе низова. Као што дефинишемо 4 АрраиЛистс и у складу са тим чувамо податке у свакој од њих.

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

Сада бисмо понављали сваки од њих да бисмо дохватили податке о ученицима, што би у већој мери повећало временску сложеност нашег програма, као што је илустровано у наставку како следи.

подебљано у цсс-у
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);
}

Сада урадимо исто уз помоћ концепта наученог изнад имплементацијом истог. Дакле, да бисте направили нашу прилагођену листу АрраиЛист, извршите доле наведене кораке на следећи начин:

Процедура: Конструкција прилагођене листе АрраиЛист је следећа:

  1. Направите објекат АрраиЛист и поставите његов тип као Цласс Дата.
  2. Дефинишите класу и ставите потребне ентитете у конструктор.
  3. Повежите те ентитете са глобалним варијаблама.
  4. Подаци примљени из АрраиЛист су оног типа класе који чува више података.

Пример

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

Излаз
1 Shubham 100 8762357381 2 Atul 99 8762357382 3 Ayush 93 8762357383 4 Rupesh 94 8762357384

Прилагођена листа АрраиЛист у Јави може се креирати проширењем класе јава.утил.АбстрацтЛист и имплементацијом њених метода. Ево примера како можете да креирате прилагођену листу АрраиЛист:

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

Излаз
CustomArrayList: [1 2 3]

У овом примеру прилагођени АрраиЛист је креиран проширењем класе АбстрацтЛист и имплементацијом његових метода сизе гет адд и ремове. Прилагођена листа АрраиЛист такође има приватну методу која се зове осигурањеЦапацити која удвостручује величину АрраиЛист ако јој понестане простора.

Предности коришћења прилагођене АрраиЛист у Јави:

  1. Флексибилност: Креирање прилагођеног АрраиЛист-а вам омогућава да прилагодите понашање АрраиЛист-а тако да задовољи специфичне потребе ваше апликације.
  2. Разумевање: Креирање сопствене АрраиЛист од нуле може вам помоћи да разумете како функционишу АрраиЛистс и како да их ефикасно користите.

Недостаци коришћења прилагођене АрраиЛист у Јави:

  1. Потрошња времена: Креирање прилагођене АрраиЛист може бити дуготрајно и захтева добро

Креирај квиз