자바 배열목록 수업은 동적 정렬 요소를 저장하기 위해. 배열과 비슷하지만 크기 제한 없음 . 언제든지 요소를 추가하거나 제거할 수 있습니다. 따라서 기존 어레이보다 훨씬 더 유연합니다. 그것은에서 발견된다 java.util 패키지. C++의 Vector와 같습니다.
Java의 ArrayList에도 중복 요소가 있을 수 있습니다. 여기에서는 List 인터페이스의 모든 메소드를 사용할 수 있도록 List 인터페이스를 구현합니다. ArrayList는 내부적으로 삽입 순서를 유지합니다.
AbstractList 클래스를 상속하고 구현합니다. 목록 인터페이스 .
Java ArrayList 클래스에 대한 중요한 사항은 다음과 같습니다.
파이썬 rstrip
- Java ArrayList 클래스에는 중복 요소가 포함될 수 있습니다.
- Java ArrayList 클래스는 삽입 순서를 유지합니다.
- Java ArrayList 클래스가 아닙니다. 동기화됨 .
- Java ArrayList는 배열이 인덱스 기반으로 작동하기 때문에 임의 액세스를 허용합니다.
- ArrayList에서는 배열 목록에서 요소가 제거되면 많은 이동이 발생해야 하기 때문에 조작이 Java의 LinkedList보다 약간 느립니다.
- int, float, char 등과 같은 기본 유형의 배열 목록을 생성할 수 없습니다. 이러한 경우에는 필수 래퍼 클래스를 사용해야 합니다. 예를 들어:
ArrayList al = ArrayList(); // does not work ArrayList al = new ArrayList(); // works fine
- Java ArrayList는 크기에 따라 초기화됩니다. 크기는 배열 목록에서 동적이며 목록에 추가되거나 제거되는 요소에 따라 달라집니다.
ArrayList 클래스의 계층 구조
위 다이어그램에서 볼 수 있듯이 Java ArrayList 클래스는 List 인터페이스를 구현하는 AbstractList 클래스를 확장합니다. List 인터페이스는 수집 계층적 순서의 반복 가능한 인터페이스.
ArrayList 클래스 선언
java.util.ArrayList 클래스 선언을 살펴보겠습니다.
public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable
ArrayList의 생성자
건설자 | 설명 |
---|---|
배열목록() | 빈 배열 목록을 만드는 데 사용됩니다. |
ArrayList(컬렉션 c) | 컬렉션의 요소로 초기화되는 배열 목록을 만드는 데 사용됩니다. c. |
ArrayList(정수 용량) | 지정된 초기 용량을 갖는 배열 목록을 작성하는 데 사용됩니다. |
ArrayList의 메소드
방법 | 설명 |
---|---|
무효의 추가하다 (int 인덱스, E 요소) | 목록의 지정된 위치에 지정된 요소를 삽입하는 데 사용됩니다. |
부울 추가하다 (그리고 그리고) | 목록 끝에 지정된 요소를 추가하는 데 사용됩니다. |
부울 addAll(컬렉션 c) | 지정된 컬렉션의 반복자가 반환하는 순서대로 지정된 컬렉션의 모든 요소를 이 목록의 끝에 추가하는 데 사용됩니다. |
부울 addAll(int 인덱스, 컬렉션 c) | 목록의 지정된 위치에서 시작하여 지정된 컬렉션의 모든 요소를 추가하는 데 사용됩니다. |
무효 클리어 () | 이 목록에서 모든 요소를 제거하는 데 사용됩니다. |
void verifyCapacity(int 필수Capacity) | ArrayList 인스턴스의 용량을 향상시키는 데 사용됩니다. |
E get(int 인덱스) | 목록의 특정 위치에서 요소를 가져오는 데 사용됩니다. |
부울 isEmpty() | 목록이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
반복자() | |
목록반복자() | |
int lastIndexOf(객체 o) | 지정된 요소가 마지막으로 나타나는 이 목록의 인덱스를 반환하는 데 사용되며, 목록에 이 요소가 포함되어 있지 않으면 -1을 반환합니다. |
객체[] toArray() | 이 목록의 모든 요소를 올바른 순서로 포함하는 배열을 반환하는 데 사용됩니다. |
T[] toArray(T[] a) | 이 목록의 모든 요소를 올바른 순서로 포함하는 배열을 반환하는 데 사용됩니다. |
객체 복제() | ArrayList의 얕은 복사본을 반환하는 데 사용됩니다. |
부울 포함(객체 o) | 목록에 지정된 요소가 포함되어 있으면 true를 반환합니다. |
int indexOf(객체 o) | 이 목록에서 지정된 요소가 처음 나타나는 인덱스를 반환하는 데 사용됩니다. 목록에 이 요소가 포함되어 있지 않으면 -1을 반환합니다. |
E 제거(int 인덱스) | 목록의 지정된 위치에 있는 요소를 제거하는 데 사용됩니다. |
부울 제거(객체 o) | 지정된 요소의 첫 번째 항목을 제거하는 데 사용됩니다. |
부울 RemoveAll(컬렉션 c) | 목록에서 모든 요소를 제거하는 데 사용됩니다. |
boolean RemoveIf(조건자 필터) | 주어진 조건을 만족하는 모든 요소를 목록에서 제거하는 데 사용됩니다. |
보호된 무효 제거 범위(int fromIndex, int toIndex) | 주어진 범위 내에 있는 모든 요소를 제거하는 데 사용됩니다. |
void replacementAll(UnaryOperator 연산자) | 목록의 모든 요소를 지정된 요소로 바꾸는 데 사용됩니다. |
void keepAll(컬렉션 c) | 지정된 컬렉션에 있는 목록의 모든 요소를 유지하는 데 사용됩니다. |
E 세트(int 인덱스, E 요소) | 목록의 지정된 위치에 있는 지정된 요소를 바꾸는 데 사용됩니다. |
무효 정렬(비교기 c) | 지정된 비교자를 기준으로 목록의 요소를 정렬하는 데 사용됩니다. |
분할기 분할기() | 목록의 요소에 대한 분할자를 만드는 데 사용됩니다. |
목록 하위 목록(int fromIndex, int toIndex) | 주어진 범위 내에 있는 모든 요소를 가져오는 데 사용됩니다. |
정수 크기() | 목록에 있는 요소의 수를 반환하는 데 사용됩니다. |
무효 TrimToSize() | 이 ArrayList 인스턴스의 용량을 목록의 현재 크기로 자르는 데 사용됩니다. |
Java 비제네릭 대. 일반 컬렉션
Java 컬렉션 프레임워크는 JDK 1.5 이전에는 일반이 아니었습니다. 1.5부터는 일반적입니다.
Java의 새로운 일반 컬렉션을 사용하면 컬렉션에 한 가지 유형의 객체만 가질 수 있습니다. 이제는 유형이 안전하므로 런타임 시 유형 변환이 필요하지 않습니다.
Java 컬렉션을 생성하는 제네릭이 아닌 오래된 예를 살펴보겠습니다.
ArrayList list=new ArrayList();//creating old non-generic arraylist
Java 컬렉션을 생성하는 새로운 일반 예제를 살펴보겠습니다.
ArrayList list=new ArrayList();//creating new generic arraylist
일반 컬렉션에서는 각괄호로 유형을 지정합니다. 이제 ArrayList에는 지정된 객체 유형만 포함되도록 강제됩니다. 다른 유형의 개체를 추가하려고 하면 컴파일 타임 오류 .
Java 제네릭에 대한 자세한 내용을 보려면 여기를 클릭하세요. 자바 제네릭 튜토리얼 .
Java ArrayList 예
파일 이름: ArrayListExample1.java
import java.util.*; public class ArrayListExample1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Printing the arraylist object System.out.println(list); } }지금 테스트해보세요
산출:
[Mango, Apple, Banana, Grapes]
Iterator를 사용하여 ArrayList 반복
Iterator 인터페이스를 사용하여 ArrayList 요소를 순회하는 예제를 살펴보겠습니다.
파일 이름: ArrayListExample2.java
import java.util.*; public class ArrayListExample2{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through Iterator Iterator itr=list.iterator();//getting the Iterator while(itr.hasNext()){//check if iterator has the elements System.out.println(itr.next());//printing the element and move to next } } }지금 테스트해보세요
산출:
Mango Apple Banana Grapes
For-each 루프를 사용하여 ArrayList 반복
for-each 루프를 사용하여 ArrayList 요소를 순회하는 예를 살펴보겠습니다.
파일 이름: ArrayListExample3.java
import java.util.*; public class ArrayListExample3{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Mango');//Adding object in arraylist list.add('Apple'); list.add('Banana'); list.add('Grapes'); //Traversing list through for-each loop for(String fruit:list) System.out.println(fruit); } }
산출:
지금 테스트해보세요Mango Apple Banana Grapes
ArrayList 가져오기 및 설정
그만큼 get() 메소드 지정된 인덱스의 요소를 반환하는 반면, set() 메서드 요소를 변경합니다.
파일 이름: ArrayListExample4.java
import java.util.*; public class ArrayListExample4{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Mango'); al.add('Apple'); al.add('Banana'); al.add('Grapes'); //accessing the element System.out.println('Returning element: '+al.get(1));//it will return the 2nd element, because index starts from 0 //changing the element al.set(1,'Dates'); //Traversing list for(String fruit:al) System.out.println(fruit); } }지금 테스트해보세요
산출:
Returning element: Apple Mango Dates Banana Grapes
ArrayList를 정렬하는 방법
그만큼 java.util 패키지는 유틸리티 클래스를 제공합니다 컬렉션 , 여기에는 정적 메서드 sort()가 있습니다. 사용하여 컬렉션.정렬() 방법을 사용하면 ArrayList를 쉽게 정렬할 수 있습니다.
파일 이름: SortArrayList.java
import java.util.*; class SortArrayList{ public static void main(String args[]){ //Creating a list of fruits List list1=new ArrayList(); list1.add('Mango'); list1.add('Apple'); list1.add('Banana'); list1.add('Grapes'); //Sorting the list Collections.sort(list1); //Traversing list through the for-each loop for(String fruit:list1) System.out.println(fruit); System.out.println('Sorting numbers...'); //Creating a list of numbers List list2=new ArrayList(); list2.add(21); list2.add(11); list2.add(51); list2.add(1); //Sorting the list Collections.sort(list2); //Traversing list through the for-each loop for(Integer number:list2) System.out.println(number); } }
산출:
Apple Banana Grapes Mango Sorting numbers... 1 11 21 51
Java에서 컬렉션의 요소를 반복하는 방법
컬렉션 요소를 탐색하는 방법에는 여러 가지가 있습니다.
- Iterator 인터페이스를 통해.
- for-each 루프를 통해.
- ListIterator 인터페이스를 통해.
- for 루프로.
- forEach() 메소드를 통해.
- forEachRemaining() 메소드를 사용합니다.
나머지 방법을 통해 컬렉션 반복
다른 방법을 통해 ArrayList 요소를 탐색하는 예를 살펴보겠습니다.
파일 이름: ArrayList4.java
import java.util.*; class ArrayList4{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); System.out.println('Traversing list through List Iterator:'); //Here, element iterates in reverse order ListIterator list1=list.listIterator(list.size()); while(list1.hasPrevious()) { String str=list1.previous(); System.out.println(str); } System.out.println('Traversing list through for loop:'); for(int i=0;i<list.size();i++) { system.out.println(list.get(i)); } system.out.println('traversing list through foreach() method:'); the method is a new feature, introduced in java 8. list.foreach(a->{ //Here, we are using lambda expression System.out.println(a); }); System.out.println('Traversing list through forEachRemaining() method:'); Iterator itr=list.iterator(); itr.forEachRemaining(a-> //Here, we are using lambda expression { System.out.println(a); }); } } </list.size();i++)>
산출:
Traversing list through List Iterator: Ajay Ravi Vijay Ravi Traversing list through for loop: Ravi Vijay Ravi Ajay Traversing list through forEach() method: Ravi Vijay Ravi Ajay Traversing list through forEachRemaining() method: Ravi Vijay Ravi Ajay
Java ArrayList의 사용자 정의 클래스 객체
Student 클래스 객체를 배열 목록에 저장하는 예를 살펴보겠습니다.
파일 이름: ArrayList5.java
class Student{ int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name; this.age=age; } }
import java.util.*; class ArrayList5{ public static void main(String args[]){ //Creating user-defined class objects Student s1=new Student(101,'Sonoo',23); Student s2=new Student(102,'Ravi',21); Student s2=new Student(103,'Hanumat',25); //creating arraylist ArrayList al=new ArrayList(); al.add(s1);//adding Student class object al.add(s2); al.add(s3); //Getting Iterator Iterator itr=al.iterator(); //traversing elements of ArrayList object while(itr.hasNext()){ Student st=(Student)itr.next(); System.out.println(st.rollno+' '+st.name+' '+st.age); } } }
산출:
101 Sonoo 23 102 Ravi 21 103 Hanumat 25
Java ArrayList 직렬화 및 역직렬화 예제
ArrayList 개체를 직렬화한 다음 역직렬화하는 예제를 살펴보겠습니다.
파일 이름: ArrayList6.java
import java.io.*; import java.util.*; class ArrayList6 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); try { //Serialization FileOutputStream fos=new FileOutputStream('file'); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(al); fos.close(); oos.close(); //Deserialization FileInputStream fis=new FileInputStream('file'); ObjectInputStream ois=new ObjectInputStream(fis); ArrayList list=(ArrayList)ois.readObject(); System.out.println(list); }catch(Exception e) { System.out.println(e); } } }
산출:
[Ravi, Vijay, Ajay]
요소를 추가하는 Java ArrayList 예제
여기서는 요소를 추가하는 다양한 방법을 살펴보겠습니다.
파일 이름: ArrayList7.java
import java.util.*; class ArrayList7{ public static void main(String args[]){ ArrayList al=new ArrayList(); System.out.println('Initial list of elements: '+al); //Adding elements to the end of the list al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After invoking add(E e) method: '+al); //Adding an element at the specific position al.add(1, 'Gaurav'); System.out.println('After invoking add(int index, E element) method: '+al); ArrayList al2=new ArrayList(); al2.add('Sonoo'); al2.add('Hanumat'); //Adding second list elements to the first list al.addAll(al2); System.out.println('After invoking addAll(Collection c) method: '+al); ArrayList al3=new ArrayList(); al3.add('John'); al3.add('Rahul'); //Adding second list elements to the first list at specific position al.addAll(1, al3); System.out.println('After invoking addAll(int index, Collection c) method: '+al); } }
산출:
Initial list of elements: [] After invoking add(E e) method: [Ravi, Vijay, Ajay] After invoking add(int index, E element) method: [Ravi, Gaurav, Vijay, Ajay] After invoking addAll(Collection c) method: [Ravi, Gaurav, Vijay, Ajay, Sonoo, Hanumat] After invoking addAll(int index, Collection c) method: [Ravi, John, Rahul, Gaurav, Vijay, Ajay, Sonoo, Hanumat]
요소를 제거하는 Java ArrayList 예제
여기서는 요소를 제거하는 다양한 방법을 볼 수 있습니다.
파일 이름: ArrayList8.java
import java.util.*; class ArrayList8 { public static void main(String [] args) { ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); al.add('Anuj'); al.add('Gaurav'); System.out.println('An initial list of elements: '+al); //Removing specific element from arraylist al.remove('Vijay'); System.out.println('After invoking remove(object) method: '+al); //Removing element on the basis of specific position al.remove(0); System.out.println('After invoking remove(index) method: '+al); //Creating another arraylist ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); //Adding new elements to arraylist al.addAll(al2); System.out.println('Updated list : '+al); //Removing all the new elements from arraylist al.removeAll(al2); System.out.println('After invoking removeAll() method: '+al); //Removing elements on the basis of specified condition al.removeIf(str -> str.contains('Ajay')); //Here, we are using Lambda expression System.out.println('After invoking removeIf() method: '+al); //Removing all the elements available in the list al.clear(); System.out.println('After invoking clear() method: '+al); } }
산출:
An initial list of elements: [Ravi, Vijay, Ajay, Anuj, Gaurav] After invoking remove(object) method: [Ravi, Ajay, Anuj, Gaurav] After invoking remove(index) method: [Ajay, Anuj, Gaurav] Updated list : [Ajay, Anuj, Gaurav, Ravi, Hanumat] After invoking removeAll() method: [Ajay, Anuj, Gaurav] After invoking removeIf() method: [Anuj, Gaurav] After invoking clear() method: []
keepAll() 메소드의 Java ArrayList 예
파일 이름: ArrayList9.java
import java.util.*; class ArrayList9{ public static void main(String args[]){ ArrayList al=new ArrayList(); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); ArrayList al2=new ArrayList(); al2.add('Ravi'); al2.add('Hanumat'); al.retainAll(al2); System.out.println('iterating the elements after retaining the elements of al2'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
산출:
iterating the elements after retaining the elements of al2 Ravi
isEmpty() 메소드의 Java ArrayList 예
파일 이름: ArrayList4.java
import java.util.*; class ArrayList10{ public static void main(String [] args) { ArrayList al=new ArrayList(); System.out.println('Is ArrayList Empty: '+al.isEmpty()); al.add('Ravi'); al.add('Vijay'); al.add('Ajay'); System.out.println('After Insertion'); System.out.println('Is ArrayList Empty: '+al.isEmpty()); } }
산출:
Is ArrayList Empty: true After Insertion Is ArrayList Empty: false
Java ArrayList 예: 도서
목록에 책을 추가하고 모든 책을 인쇄하는 ArrayList 예제를 살펴보겠습니다.
파일 이름: ArrayListExample20.java
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class ArrayListExample20 { public static void main(String[] args) { //Creating list of Books List list=new ArrayList(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications and Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to list list.add(b1); list.add(b2); list.add(b3); //Traversing list for(Book b:list){ System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }지금 테스트해보세요
산출:
101 Let us C Yashwant Kanetkar BPB 8 102 Data Communications and Networking Forouzan Mc Graw Hill 4 103 Operating System Galvin Wiley 6
ArrayList의 크기와 용량
배열 목록의 크기와 용량은 초보자가 혼란스러워하는 두 가지 용어입니다. 이 섹션에서는 몇 가지 예를 통해 이를 이해해 보겠습니다. 다음 코드 조각을 고려해보세요.
파일 이름: SizeCapacity.java
import java.util.*; public class SizeCapacity { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(); System.out.println('The size of the array is: ' + al.size()); } }
산출:
The size of the array is: 0
설명: 배열 목록에 대해 아무 작업도 수행하지 않았으므로 출력이 의미가 있습니다. 이제 다음 프로그램을 관찰해 보세요.
파일 이름: SizeCapacity1.java
import java.util.*; public class SizeCapacity1 { public static void main(String[] args) throws Exception { ArrayList al = new ArrayList(10); System.out.println('The size of the array is: ' + al.size()); } }
산출:
The size of the array is: 0
설명: 크기는 여전히 0이고 그 이유는 숫자 10이 크기가 아닌 용량을 나타내기 때문입니다. 실제로 크기는 배열에 있는 요소의 총 개수를 나타냅니다. 따라서 요소를 추가하지 않았으므로 두 프로그램 모두에서 배열 목록의 크기가 0입니다.
용량은 배열 목록에 포함될 수 있는 요소의 총 개수를 나타냅니다. 따라서 배열 목록의 용량은 항상 배열 목록의 크기보다 크거나 같습니다. 배열 목록에 요소를 추가하면 배열 목록의 크기가 용량과 같아졌는지 여부를 확인합니다. 그렇다면 배열 목록의 용량이 늘어납니다. 따라서 위의 예에서는 10개의 요소가 목록에 추가될 때까지 용량은 10이 됩니다. 11을 더하면일요소의 용량이 증가합니다. 두 예 모두 배열 목록의 용량은 10입니다. 첫 번째 경우에는 배열 목록의 기본 용량이 10이므로 용량은 10입니다. 두 번째 경우에는 배열의 용량이 10이라고 명시적으로 언급했습니다. 목록은 10입니다.
참고: 배열 목록에서 용량이 어떻게 증가하는지 알 수 있는 표준 방법은 없습니다. 실제로 용량이 증가하는 방식은 GDK 버전마다 다릅니다. 따라서 GDK에서 용량증가 코드가 구현되는 방식을 확인하는 것이 필요하다. ArrayList 클래스에는 배열 목록의 용량을 반환하는 미리 정의된 메서드가 없습니다. 따라서 이해를 돕기 위해 Vector 클래스의capacity() 메소드를 사용합니다. 크기와 용량의 논리는 ArrayList 클래스와 Vector 클래스에서 동일합니다.
관련 주제
Java에서 ArrayList 및 LinkedList를 사용하는 경우
ArrayList와 벡터의 차이점
리눅스 키보드 단축키
Java에서 ArrayList를 뒤집는 방법
Java에서 ArrayList 및 LinkedList를 사용하는 경우
ArrayList를 읽기 전용으로 만드는 방법
Java에서 ArrayList의 배열 길이와 크기()의 차이점
Java에서 ArrayList를 동기화하는 방법
Java에서 ArrayList를 Array로, Array를 ArrayList로 변환하는 방법
Java의 배열과 ArrayList
Java ArrayList를 내림차순으로 정렬하는 방법
Java의 ArrayList에서 중복을 제거하는 방법