스터디 두 번째 질문이다. Array와 ArrayList의 차이점에 대해 설명하기 !
앞의 Collection Framework와 이어지는 질문이라고도 할 수 있다 : )
+) CS 스터디를 하면서 추가한 부분들이 있어 따로 노션 링크를 첨부한다.
아래의 내용보다 더 보기 쉽게 정리한 것이다. 역시 한 번 볼 때 보다 두 번 세 번 볼 때 더 이해가 쉽다...
Array vs ArrayList vs LinkedList 비교
🔵 Array와 ArrayList의 차이점을 말해주세요.
Array는 자바에서 제공하는 기본 기능이며 ArrayList는 Java Collection Framework의 클래스입니다. 두 가지 모두 데이터를 저장하는 데 사용되는 자료 구조입니다.
두 가지의 가장 큰 차이점은 크기의 유연성입니다. Array의 경우 정적인 크기를 가지고 있으며 Array 선언 시 크기를 지정합니다. 따라서, 필요한 데이터의 수를 미리 알아야 하며 이 크기는 변할 수 없습니다.
반면, ArrayList는 동적인 크기를 가지며 크기를 지정하지 않아도 됩니다. ArrayList의 크기는 데이터 추가 및 제거 시 자동으로 조정되게 됩니다.
이러한 특징으로 인해 속도에서도 차이가 발생합니다. Array 배열은 연속된 메모리 블록에 저장되며 고정된 크기를 가지기 때문에 ArrayList 에 비해 빠릅니다. ArrayList는 크기가 내부적으로 조정되며 접근 시 추가적인 계산이 필요하여 Array에 비해 속도가 느려지게 됩니다.
🔵 Array와 ArrayList의 공통점
- 데이터를 저장하는데 사용된다.
- null 값을 저장할 수 있다.
- 중복 값 저장이 가능하다.
- 순서가 없다.
- index를 통해 접근한다.
기초 | Array | ArrayList |
정의 | 배열 은 동적으로 생성된 개체입니다. 동일한 유형의 값을 일정한 수만큼 보유하는 컨테이너 역할을 합니다. 연속 메모리 위치가 있습니다. | ArrayList 는 Java Collections 프레임워크 의 클래스입니다 . Vector, HashTable 및 HashMap 과 같은 클래스가 포함되어 있습니다 . |
정적/동적 | 배열은 정적 크기입니다. | ArrayList는 크기가 동적 입니다. |
크기 조정 가능 | 배열은 고정 길이 데이터 구조입니다. | ArrayList는 가변 길이 데이터 구조입니다. 필요할 때 자체적으로 크기를 조정할 수 있습니다. |
초기화 | 직접 또는 간접적으로 초기화하는 동안 배열의 크기를 제공하는 것은 필수입니다. | 크기를 지정하지 않고 ArrayList의 인스턴스를 만들 수 있습니다. Java는 기본 크기의 ArrayList를 생성합니다. |
성능 | 고정 크기로 인해 ArrayList에 비해 성능이 빠릅니다 . | ArrayList는 Java의 배열에 의해 내부적으로 지원됩니다. ArrayList의 크기 조정 작업은 성능을 저하시킵니다. |
원시/제네릭 유형 | 배열은 객체 와 프리미티브 유형을 모두 저장할 수 있습니다. | ArrayList에는 기본 유형을 저장할 수 없습니다 . 기본 유형을 객체로 자동 변환합니다. |
값 반복 | for 루프 또는 for each 루프를 사용하여 배열을 반복합니다. | 반복자를 사용하여 ArrayList를 반복합니다. |
유형 안전성 | 제네릭은 배열의 변환 가능한 유형이 아니기 때문에 배열과 함께 사용할 수 없습니다. | ArrayList를 사용하면 일반/ 유형 만 저장할 수 있으므로 유형이 안전합니다. |
길이 | Array는 배열의 길이를 나타내는 길이 변수를 제공합니다. | ArrayList는 ArrayList의 크기를 결정하는 size() 메서드를 제공합니다. |
요소 추가 | 할당 연산자를 사용하여 배열에 요소를 추가할 수 있습니다 . | Java는 ArrayList에 요소를 추가하는 add() 메서드를 제공합니다. |
단일/다차원 | 배열은 다차원 일 수 있습니다 . | ArrayList는 항상 1차원 입니다 . |
✅ Array vs ArrayList 비교 예제
import java.util.ArrayList;
import java.util.Arrays;
public class ArrayVsArrayListExample {
public static void main(String[] args) {
// Array 사용
int[] array = new int[3]; // 크기가 3인 정수 배열 생성
array[0] = 1; // 배열 요소에 값 할당
array[1] = 2;
array[2] = 3;
System.out.println("Array: " + Arrays.toString(array));
// ArrayList 사용
ArrayList<Integer> arrayList = new ArrayList<>(); // 정수를 저장하는 ArrayList 생성
arrayList.add(1); // ArrayList에 값 추가
arrayList.add(2);
arrayList.add(3);
System.out.println("ArrayList: " + arrayList);
// 동일한 값 추가
array[2] = 4; // 배열의 요소 값 변경
arrayList.set(2, 4); // ArrayList의 요소 값 변경
System.out.println("Updated Array: " + Arrays.toString(array));
System.out.println("Updated ArrayList: " + arrayList);
// 값 제거
array[1] = 0; // 배열의 요소 값 제거 (0으로 설정)
arrayList.remove(1); // ArrayList에서 요소 제거
System.out.println("Modified Array: " + Arrays.toString(array));
System.out.println("Modified ArrayList: " + arrayList);
}
}
ㅁ 출력 결과
📖 참고 자료
🔗Arrays 공식 문서
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html
🔗ArrayList 공식 문서
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
🔗8 Difference Between Array And ArrayList In Java With Example
https://javahungry.blogspot.com/2015/03/difference-between-array-and-arraylist-in-java-example.html
🔗Difference between Array and ArrayList
https://www.javatpoint.com/difference-between-array-and-arraylist
이렇게 Array와 ArrayList의 차이까지도 알아보았다 : )
맞다.. 찾아보면서 오잉?! 했던 거...
Arrays와 Array가 다른 건가..? 라는 질문을 하게 되었다.
Arrays는 java.util 패키지로 배열을 다루기 위한 메서드를 포함하고 있다.
즉 Array는 데이터 구조 자체를 나타내고 Arrays는 Array를 위한 메서드 패키지인 것이다.
이제 마지막 질문에 대한 정리만 후딱 끝내고 자야겠다 !
'LANGUAGE > JAVA' 카테고리의 다른 글
[JAVA] 체크 예외(Checked Exception) 언체크 예외(Unchecked Exception)의 차이 (0) | 2023.08.08 |
---|---|
[JAVA] Iterator 의 사용 목적과 특징 / Collection Framework (0) | 2023.06.26 |
[JAVA] 자바 컨테이너(컬렉션 프레임워크 / Collection Framework)란? (0) | 2023.06.25 |
[JAVA] 데이터 타입 / String 기본 메서드 및 데이터 타입 알아보기 (0) | 2023.06.18 |
[JAVA] 제네릭(Generic)이란? / 컬렉션과 데이터 구조 이해하기 (0) | 2023.05.19 |