자바 배열 목록 자바의 일부입니다 컬렉션 프레임워크 java.util 패키지의 클래스입니다. 이는 Java에서 동적 배열을 제공합니다. 하지만 표준 배열보다 느릴 수 있지만 배열에서 많은 조작이 필요한 프로그램에서는 도움이 될 수 있습니다. 이 클래스는 다음에서 찾을 수 있습니다. java.util 패키지. 주요 Java에서 ArrayList의 장점 즉, 배열을 선언하면 크기를 언급해야 하지만 ArrayList에서는 ArrayList의 크기를 언급할 필요가 없습니다. 크기를 언급하고 싶다면 그렇게 할 수 있습니다.
내용의 테이블
- Java의 ArrayList 란 무엇입니까?
- Java ArrayList 예
- Java ArrayList의 중요한 기능
- ArrayList의 생성자
- Java 메소드의 ArrayList
- ArrayList에서 수행되는 작업
- Java ArrayList의 복잡성
- 자바 ArrayList의 장점
- Java ArrayList의 단점
- 결론
- ArrayList FAQ
Java의 ArrayList 란 무엇입니까?
ArrayList는 List 인터페이스를 사용하여 구현된 Java 클래스입니다. Java ArrayList는 이름에서 알 수 있듯이 크기가 배열로 고정되지 않는 동적 배열의 기능을 제공합니다. 또한 컬렉션 프레임워크의 일부로 배열에는 사용할 수 없는 많은 기능이 있습니다.

삽화:
이미지와 함께 Integer Object 유형이 저장된 ArrayList를 확인해 보겠습니다.

Java ArrayList 예
예시 1: 다음 구현에서는 크기에 대한 언급과 함께 ArrayList를 생성하고 사용하는 방법을 보여줍니다.
자바 // Java program to demonstrate the // working of ArrayList import java.io.*; import java.util.*; class ArrayListExample { public static void main(String[] args) { // Size of the // ArrayList int n = 5; // Declaring the ArrayList with // initial size n ArrayList arr1 = 새로운 ArrayList (N); // ArrayList 선언 ArrayList arr2 = 새로운 ArrayList (); // ArrayList 인쇄 System.out.println('Array 1:' + arr1); System.out.println('배열 2:' + arr2); // 목록의 끝에 // 새 요소 추가 for (int i = 1; i<= n; i++) { arr1.add(i); arr2.add(i); } // Printing the ArrayList System.out.println('Array 1:' + arr1); System.out.println('Array 2:' + arr2); } }> 산출
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
위 프로그램에 대한 설명:
ArrayList는 동적 배열이므로 생성하는 동안 크기를 지정할 필요가 없습니다. 항목을 동적으로 추가하고 제거하면 배열 크기가 자동으로 늘어납니다. 실제 라이브러리 구현은 더 복잡할 수 있지만 다음은 배열이 가득 차거나 항목을 추가하려고 할 때 배열의 작동을 설명하는 매우 기본적인 아이디어입니다.
- 힙 메모리에 더 큰 크기의 메모리를 만듭니다(예: 두 배 크기의 메모리).
- 현재 메모리 요소를 새 메모리에 복사합니다.
- 이제 더 큰 메모리를 사용할 수 있으므로 새 항목이 추가됩니다.
- 오래된 메모리를 삭제하세요.
Java ArrayList의 중요한 기능
- ArrayList가 상속함 추상목록 클래스를 구현하고 목록 인터페이스 .
- ArrayList는 크기별로 초기화됩니다. 그러나 컬렉션이 커지거나 줄어들면 크기가 자동으로 증가합니다. 사물 컬렉션에서 제거됩니다.
- Java ArrayList를 사용하면 목록에 무작위로 액세스할 수 있습니다.
- ArrayList는 다음 용도로 사용할 수 없습니다. 래퍼 클래스 그런 경우에는.
- Java의 ArrayList는 다음과 같이 볼 수 있습니다. C++의 벡터 .
- ArrayList가 동기화되지 않았습니다. Java에서 이에 상응하는 동기화 클래스는 다음과 같습니다. 벡터 .
이해하자 Java ArrayList 심층 분석 . 아래 이미지를보십시오 :

위 그림에서, 추상목록 , CopyOnWriteArrayList , 그리고 AbstractSequentialList 목록 인터페이스를 구현하는 클래스입니다. 언급된 각 클래스에는 별도의 기능이 구현됩니다. 그들은:
- 초록목록: 이 클래스는 이 AbstractList 클래스만 확장하고 다음 항목만 구현하면 되는 수정 불가능한 목록을 구현하는 데 사용됩니다. 얻다() 그리고 크기() 행동 양식.
- CopyOnWriteArrayList: 이 클래스는 목록 인터페이스를 구현합니다. 의 향상된 버전입니다. 배열목록 모든 수정 사항(추가, 설정, 제거 등)은 목록의 새로운 복사본을 만들어 구현됩니다.
- 추상순차목록: 이 클래스는 컬렉션 인터페이스 그리고 AbstractCollection 클래스. 이 클래스는 이 AbstractList 클래스만 확장하고 다음 항목만 구현하면 되는 수정 불가능한 목록을 구현하는 데 사용됩니다. 얻다() 그리고 크기() 행동 양식.
Java의 ArrayList 생성자
ArrayList를 생성하려면 ArrayList 클래스의 객체를 생성해야 합니다. ArrayList 클래스는 다양한 클래스로 구성됩니다. 생성자 배열 목록을 생성할 수 있습니다. 이 클래스에서 사용할 수 있는 생성자는 다음과 같습니다.
1. 배열목록()
이 생성자는 빈 배열 목록을 만드는 데 사용됩니다. 이름이 지정된 빈 ArrayList를 생성하려는 경우 도착 , 그러면 다음과 같이 생성될 수 있습니다.
ArrayList arr = new ArrayList();>
2. ArrayList(컬렉션 c)
이 생성자는 컬렉션 c의 요소로 초기화된 배열 목록을 만드는 데 사용됩니다. 컬렉션 c에 있는 요소를 포함하는 ArrayList arr을 생성하고 다음과 같이 생성할 수 있다고 가정합니다.
ArrayList arr = new ArrayList(c);>
3. ArrayList(정수 용량)
이 생성자는 지정된 초기 용량으로 배열 목록을 작성하는 데 사용됩니다. 초기 크기가 N인 ArrayList를 생성한다고 가정하면 다음과 같이 생성될 수 있습니다.
ArrayList arr = new ArrayList(N);>
Java ArrayList 메소드
| 방법 | 설명 |
|---|---|
| add(int 인덱스, 객체 요소) | 이 방법은 목록의 특정 위치 인덱스에 특정 요소를 삽입하는 데 사용됩니다. |
| add(객체 o) | 이 메서드는 목록 끝에 특정 요소를 추가하는 데 사용됩니다. |
| addAll(컬렉션 C) | 이 메서드는 지정된 컬렉션의 반복자가 값을 반환하는 순서대로 특정 컬렉션의 모든 요소를 언급된 목록 끝에 추가하는 데 사용됩니다. |
| addAll(int 인덱스, 컬렉션 C) | 특정 컬렉션의 지정된 위치에서 시작하는 모든 요소를 언급된 목록에 삽입하는 데 사용됩니다. |
| 분명한() | 이 메소드는 목록에서 모든 요소를 제거하는 데 사용됩니다. |
| 클론() | 이 메소드는 Java에서 ArrayList의 얕은 복사본을 반환하는 데 사용됩니다. |
| 포함? (객관 o) | 이 목록에 지정된 요소가 포함되어 있으면 true를 반환합니다. |
| verifyCapacity?(int minCapacity) | 필요한 경우 이 ArrayList 인스턴스의 용량을 늘려 최소 용량 인수로 지정된 요소 수 이상을 보유할 수 있도록 합니다. |
| forEach?(소비자 행동) | 모든 요소가 처리되거나 작업에서 예외가 발생할 때까지 Iterable의 각 요소에 대해 지정된 작업을 수행합니다. |
| get?(int 인덱스) | 이 목록의 지정된 위치에 있는 요소를 반환합니다. |
| indexOf(객체 O) | 특정 요소가 처음 나타나는 인덱스가 반환되거나 해당 요소가 목록에 없는 경우 -1이 반환됩니다. |
| 비었다?() | 이 목록에 요소가 없으면 true를 반환합니다. |
| lastIndexOf(객체 O) | 특정 요소가 마지막으로 나타나는 인덱스가 반환되거나 해당 요소가 목록에 없는 경우 -1이 반환됩니다. |
| 목록반복자?() | 이 목록의 요소에 대한 목록 반복자를 (적절한 순서로) 반환합니다. |
| listIterator?(int 인덱스) | 목록의 지정된 위치에서 시작하여 이 목록의 요소에 대한 목록 반복자를 (적절한 순서로) 반환합니다. |
| 제거하시겠습니까?(int 인덱스) | 이 목록의 지정된 위치에 있는 요소를 제거합니다. |
| 제거하다? (객관 o) | 이 목록에서 지정된 요소가 처음으로 나타나는 경우 이를 제거합니다. |
| RemoveAll?(컬렉션 c) | 지정된 컬렉션에 포함된 모든 요소를 이 목록에서 제거합니다. |
| RemoveIf?(조건자 필터) | 주어진 조건을 만족하는 이 컬렉션의 모든 요소를 제거합니다. |
| RemoveRange?(int fromIndex, int toIndex) | 이 목록에서 인덱스가 fromIndex(포함)와 toIndex(제외) 사이에 있는 모든 요소를 제거합니다. |
| keepAll?(컬렉션 c) | 지정된 컬렉션에 포함된 이 목록의 요소만 유지합니다. |
| set?(int 인덱스, E 요소) | 이 목록의 지정된 위치에 있는 요소를 지정된 요소로 바꿉니다. |
| 크기?() | 이 목록의 요소 수를 반환합니다. |
| 분할기?() | 이 목록의 요소에 대해 지연 바인딩 및 빠른 실패 Spliterator를 만듭니다. |
| subList?(int fromIndex, int toIndex) | 지정된 fromIndex(포함)와 toIndex(제외) 사이에 있는 이 목록의 부분에 대한 뷰를 반환합니다. |
| toArray() | 이 메소드는 목록의 모든 요소를 올바른 순서로 포함하는 배열을 반환하는 데 사용됩니다. |
| toArray(Object[] O) | 또한 이전 메서드와 동일한 올바른 순서로 이 목록의 모든 요소를 포함하는 배열을 반환하는 데 사용됩니다. |
| 트림투사이즈() | 이 메서드는 ArrayList 인스턴스의 용량을 목록의 현재 크기로 자르는 데 사용됩니다. |
메모: 일반 ArrayList를 만들 수도 있습니다.
// 일반 정수 ArrayList 생성
ArrayList arrli = new ArrayList();
Java ArrayList의 몇 가지 핵심 사항
- ArrayList는 밑줄 친 데이터 구조 크기 조정 가능한 배열 또는 확장 가능한 배열입니다.
- ArrayList 중복이 허용됩니다.
- 게재 순서가 유지됩니다.
- 이기종 개체가 허용됩니다.
- Null 삽입이 가능합니다.
나열된 ArrayList에서 몇 가지 기본 작업을 수행하는 방법을 살펴보겠습니다. 이에 대해서는 모든 작업 구현과 함께 추가로 논의할 것입니다.
- 목록에 요소 추가/요소 추가
- 요소 변경/요소 설정
- 요소 제거/요소 삭제
- 요소 반복
- 요소 가져오기
- 두 숫자 사이에 요소 추가
- 요소 정렬
- 배열목록 크기
ArrayList에서 수행되는 작업
1. 요소 추가
ArrayList에 요소를 추가하려면 add() 메소드 . 이 메서드는 다양한 매개변수를 기반으로 여러 작업을 수행하도록 오버로드됩니다. 그것들은 다음과 같습니다:
- add(Object): 이 메소드는 ArrayList의 끝에 요소를 추가하는 데 사용됩니다.
- add(int index, Object): ArrayList의 특정 인덱스에 요소를 추가하는 데 사용되는 메소드입니다.
다음은 위의 접근 방식을 구현한 것입니다.
자바 // Java Program to Add elements to An ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Array of string type ArrayListal = 새로운 ArrayList(); // ArrayList에 요소 추가 // 사용자 정의 입력 al.add('Geeks'); al.add('긱스'); // 여기서는 추가될 인덱스를 // 언급합니다. al.add(1, 'For'); // ArrayList의 모든 요소를 인쇄합니다. System.out.println(al); } }> 산출
[Geeks, For, Geeks]>
2. 요소 변경
요소를 추가한 후 요소를 변경하려면 다음을 사용하여 수행할 수 있습니다. 세트() 방법. ArrayList는 인덱스가 지정되어 있으므로 변경하려는 요소는 해당 요소의 인덱스로 참조됩니다. 따라서 이 메서드는 인덱스와 해당 인덱스에 삽입되어야 하는 업데이트된 요소를 사용합니다.
다음은 위의 접근 방식을 구현한 것입니다.
자바 // Java Program to Change elements in ArrayList // Importing all utility classes import java.util.*; // main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist object of string type ArrayListal = 새로운 ArrayList(); // Arraylist에 요소 추가 // 사용자 정의 입력 요소 al.add('Geeks'); al.add('긱스'); // 추가할 인덱스를 지정하여 추가 al.add(1, 'Geeks'); // Arraylist 요소 인쇄 System.out.println('Initial ArrayList ' + al); // 첫 번째 인덱스에 요소 설정 al.set(1, 'For'); // 업데이트된 ArrayList 인쇄 System.out.println('Updated ArrayList ' + al); } }> 산출
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
삼. 요소 제거
ArrayList에서 요소를 제거하려면 제거() 메서드 . 이 메서드는 다양한 매개변수를 기반으로 여러 작업을 수행하도록 오버로드됩니다. 그것들은 다음과 같습니다:
- 제거(개체): 이 메소드는 단순히 ArrayList에서 객체를 제거하는 데 사용됩니다. 그러한 객체가 여러 개 있는 경우 해당 객체의 첫 번째 발생이 제거됩니다.
- 제거(정수 인덱스): ArrayList는 색인화되어 있으므로 이 메소드는 ArrayList의 특정 색인에 있는 요소를 단순히 제거하는 정수 값을 사용합니다. 요소를 제거한 후에는 모든 요소가 왼쪽으로 이동하여 공간을 채우고 개체의 인덱스가 업데이트됩니다.
예:
문자열 비교 C#자바
// Java program to Remove Elements in ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an object of arraylist class ArrayListal = 새로운 ArrayList(); // ArrayList에 요소 추가 // 사용자 정의 추가 al.add('Geeks'); al.add('긱스'); // 특정 인덱스에 요소 추가 al.add(1, 'For'); // ArrayList의 모든 요소 인쇄 System.out.println('Initial ArrayList ' + al); // ArrayList 위의 요소 제거 al.remove(1); // 업데이트된 Arraylist 요소 인쇄 System.out.println('인덱스 제거 후 ' + al); // ArrayList에서 이 단어 요소 제거 al.remove('Geeks'); // 이제 업데이트된 ArrayList를 인쇄합니다. System.out.println('객체 제거 후 ' + al); } }> 산출
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
4. ArrayList 반복
ArrayList를 반복하는 방법에는 여러 가지가 있습니다. 가장 유명한 방법은 기본을 사용하는 것입니다. for 루프 와 결합하여 get() 메소드 특정 인덱스의 요소를 가져오고 루프에 대한 고급 .
예
자바 // Java program to Iterate the elements // in an ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist of string type ArrayListal = 새로운 ArrayList(); // ArrayList에 요소 추가 // 표준 add() 메서드 사용 al.add('Geeks'); al.add('긱스'); al.add(1, '용'); // Get 메서드와 // for 루프 사용 for (int i = 0; i< al.size(); i++) { System.out.print(al.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : al) System.out.print(str + ' '); } }> 산출
Geeks For Geeks Geeks For Geeks>
5. 요소 가져오기
자바 // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList 목록 = 새로운 ArrayList(); // 숫자 추가 list.add(9); 목록.추가(5); 목록.추가(6); System.out.println(목록); // 메소드 가져오기 Integer n= list.get(1); System.out.println('인덱스 1번 숫자는:'+n); } }> 산출
[9, 5, 6] at indext 1 number is:5>
6. 두 숫자 사이에 요소 추가
자바 // Java program to add the elements // between two numbers in ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList 목록 = 새로운 ArrayList(); 목록.추가(1); 목록.추가(2); 목록.추가(4); System.out.println(목록); // 누락된 요소 3을 삽입합니다. list.add(2, 3); System.out.println(목록); } }> 산출
[1, 2, 4] [1, 2, 3, 4]>
7. ArrayList 정렬
자바 // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList 목록 = 새로운 ArrayList(); 목록.추가(2); 목록.추가(4); 목록.추가(3); 목록.추가(1); System.out.println('목록 정렬 전:'); System.out.println(목록); Collections.sort(목록); System.out.println('목록 정렬 후:'); System.out.println(목록); } }> 산출
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>
8. 요소의 크기
자바 // Java program to find the size // of elements of an ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList 목록 = 새로운 ArrayList(); 목록.추가(1); 목록.추가(2); 목록.추가(3); 목록.추가(4); int b = list.size(); System.out.println('크기는 :' + b); } }> 산출
The size is :4>
Java ArrayList의 복잡성
작업 | 시간 복잡도 | 공간 복잡도 |
|---|---|---|
ArrayList에 요소 삽입 | 오(1) | 에) |
ArrayList에서 요소 제거 | 에) | 오(1) |
ArrayList의 요소 순회 | 에) | 에) |
ArrayList의 요소 교체 | 오(1) | 오(1) |
Java의 ArrayList는 List 인터페이스를 구현하는 Java 컬렉션 프레임워크의 클래스입니다. Java에서 ArrayList를 사용할 때의 장점과 단점은 다음과 같습니다.
자바 ArrayList의 장점
- 동적 크기: ArrayList는 크기를 동적으로 늘리거나 줄일 수 있으므로 필요에 따라 요소를 쉽게 추가하거나 제거할 수 있습니다.
- 사용 용이성: ArrayList는 사용이 간편하여 많은 Java 개발자에게 널리 사용됩니다.
- 빠른 액세스: ArrayList는 내부적으로 배열로 구현되므로 요소에 대한 빠른 액세스를 제공합니다.
- 정렬된 컬렉션: ArrayList는 요소의 순서를 유지하므로 요소가 추가된 순서대로 요소에 액세스할 수 있습니다.
- null 값 지원: ArrayList는 null 값을 저장할 수 있으므로 값이 없음을 표시해야 하는 경우에 유용합니다.
Java ArrayList의 단점
- 배열보다 느림: ArrayList는 목록 중간에 요소를 삽입하는 것과 같은 특정 작업의 경우 배열보다 느립니다.
- 메모리 사용량 증가: ArrayList는 동적 크기를 유지하고 크기 조정을 처리해야 하므로 배열보다 더 많은 메모리가 필요합니다.
- 스레드로부터 안전하지 않음: ArrayList는 스레드로부터 안전하지 않습니다. 즉, 여러 스레드가 동시에 목록에 액세스하고 수정할 수 있어 잠재적인 경쟁 조건과 데이터 손상이 발생할 수 있습니다.
- 성능 저하: 목록의 요소 수가 증가함에 따라 ArrayList의 성능이 저하될 수 있습니다. 특히 요소 검색이나 목록 중간에 요소 삽입과 같은 작업의 경우 더욱 그렇습니다.
결론
이 기사에서 기억해야 할 사항은 다음과 같습니다.
- ArrayList는 컬렉션 프레임워크의 일부입니다. AbstractList 클래스를 상속하고 List 인터페이스를 구현합니다.
- ArrayList는 동적 배열의 구현입니다.
- ArrayList는 매개변수 없이 컬렉션을 매개변수로 전달하고 정수를 매개변수로 전달하는 등 다양한 생성자 유형을 사용하여 초기화할 수 있습니다.
- ArrayList에서는 추가, 제거, 반복, 정렬과 같은 작업을 수행할 수 있습니다.
ArrayList FAQ
Java의 ArrayList란 무엇입니까?
Java의 ArrayList는 컬렉션 프레임워크의 일부입니다. 요소를 저장하는 데 사용되며 크기를 조정할 수 있습니다.
ArrayList에 데이터는 어떻게 저장되나요?
ArrayList는 ArrayList 크기가 가득 찰 때까지 데이터를 저장할 수 있으며, 그 이후에 더 많은 요소를 저장하려면 ArrayList의 크기가 두 배가 됩니다.
ArrayList는 중복을 허용합니까?
예, ArrayList를 사용하면 중복 값을 저장할 수 있습니다.