Java의 사용자 정의 ArrayList

Java의 사용자 정의 ArrayList

더 진행하기 전에 먼저 개념을 빠르게 수정해 보겠습니다. 배열 그리고 배열목록 빠르게. 따라서 Java에서 배열은 메모리 주소 공간에서 연속적인 방식으로 요소를 추가하는 기능을 제공하는 선형 데이터 구조인 반면 ArrayList는 Collection 프레임워크에 속하는 클래스입니다. 좋은 프로그래머라면 이 둘의 차이점을 알고 있음에도 불구하고 이미 배열 대신 ArrayList를 사용한다는 것을 알고 있습니다. 이제 ArrayList를 사용하여 앞으로 나아가면 ArrayList에 저장될 것으로 예상되는 요소의 데이터 유형 유형을 객체 문자열 정수 double float 등으로 전달하는 기능이 제공됩니다. 

통사론:

 Arraylist  al = new ArrayList  ;  

메모: 동적 크기를 갖는 Java의 ArrayList(C++의 벡터와 동일) 크기에 따라 축소되거나 확장될 수 있습니다. ArrayList는 컬렉션 프레임워크의 일부이며 다음 위치에 있습니다. java.util 패키지

통사론:

 ArrayList   list = new ArrayList  <> ();  

여기서 중요한 점은 E가 객체 데이터 유형을 나타낸다는 것입니다. 정수 여기. Integer 클래스는 기본 유형의 값을 래핑합니다. 정수 개체에서. Integer 유형의 객체에는 유형이 int인 단일 필드가 포함되어 있습니다. 의 개념을 살펴보십시오. 래퍼 클래스 Java에서 앞으로 나아가기 전에 여기 백엔드에서 제공되므로 우리가 잘 알고 있으면 이해가 더 명확해집니다. 오토박싱 및 언박싱 개념 . 목록의 요소에 대해 작업을 수행하는 동안 해당 구문이 다르기 때문에 사용자 정의 ArrayList에 요소를 추가하는 시나리오를 고려하고 둘 사이의 구문 차이를 확인하면 개념을 파악하는 것이 고갈되기 때문입니다. 

통사론:

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

통사론:

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

다음과 같이 인식할 수 있는 샘플 그림을 살펴보겠습니다.

삽화:

Java의 사용자 정의 ArrayList

여기에는 일반적으로 자주 사용하는 동일한 유형의 모든 요소가 있습니다. 이제 ArrayList가 이 이미지에 표시된 방식으로 여러 데이터를 지원하는 동일한 다이어그램 흐름을 제안해 보겠습니다. 

Java의 사용자 정의 ArrayList


위의 ArrayList에서 저장된 요소의 유형이 서로 다르다는 것을 명확하게 볼 수 있습니다. 그래서 그것은 다음과 같은 개념을 분출합니다. 제한. 단일 유형으로 변환할 수 있으며 이 List do go는 ArrayList에 어떤 종류의 데이터 유형이 있을 수 있는지에 액세스할 수 있는 유형에 따라 목록을 만들 수 있는 유연성을 제공합니다. 이 목록은 Java에서 Custom ArrayList라고 합니다. . 맞춤 ArrayList에는 사용자 요구사항에 따른 속성이 있으며 두 가지 이상의 데이터 유형이 있을 수 있습니다. 이 데이터는 다양한 기본 객체 데이터 유형의 조합으로 형성된 사용자 정의 내부 클래스에 의해 제공됩니다.

구현: 입력을 다음과 같이 받아들여야 하는 경우를 생각해 보십시오. N 학생 수와 세부 정보는 다음과 같습니다. 

  • 롤 번호
  • 이름
  • 점수
  • 전화 번호

Java의 사용자 정의 Arraylist 개념을 모른다면 아래에 나열된 개별 ArrayList를 만들 것이라고 가정하십시오. 4개의 ArrayList를 정의하고 그에 따라 각각에 데이터를 저장합니다.

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

이제 위에서 배운 개념을 활용하여 동일한 작업을 수행해 보겠습니다. 따라서 사용자 정의 ArrayList를 구성하려면 다음과 같이 아래 나열된 단계를 수행하십시오.

절차: 사용자 정의 ArrayList를 구성하는 방법은 다음과 같습니다.

  1. ArrayList 객체를 구축하고 해당 유형을 클래스 데이터로 배치합니다.
  2. 클래스를 정의하고 필요한 엔터티를 생성자에 넣습니다.
  3. 해당 엔터티를 전역 변수에 연결합니다.
  4. ArrayList에서 수신된 데이터는 여러 데이터를 저장하는 클래스 유형입니다.

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의 사용자 정의 ArrayList는 java.util.AbstractList 클래스를 확장하고 해당 메소드를 구현하여 생성할 수 있습니다. 다음은 사용자 정의 ArrayList를 생성하는 방법에 대한 예입니다.

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] 

이 예에서 사용자 정의 ArrayList는 AbstractList 클래스를 확장하고 해당 메소드 크기 get add 및 delete를 구현하여 생성됩니다. 사용자 정의 ArrayList에는 공간이 부족할 경우 ArrayList의 크기를 두 배로 늘리는 verifyCapacity라는 전용 메서드도 있습니다.

Java에서 사용자 정의 ArrayList를 사용하면 다음과 같은 이점이 있습니다.

  1. 유연성: 사용자 정의 ArrayList를 생성하면 애플리케이션의 특정 요구 사항에 맞게 ArrayList의 동작을 사용자 정의할 수 있습니다.
  2. 이해: 처음부터 자신만의 ArrayList를 생성하면 ArrayList의 작동 방식과 이를 효과적으로 사용하는 방법을 이해하는 데 도움이 됩니다.

Java에서 사용자 정의 ArrayList를 사용할 때의 단점:

  1. 시간 소모: 사용자 정의 ArrayList를 생성하는 것은 시간이 많이 걸릴 수 있으며 좋은 작업이 필요합니다.

퀴즈 만들기