2020. 7. 3. 13:03ㆍcomputer science/java
자바에서 크기를 동적으로 할당할 수 있는 배열은 Vector와 ArrayList가 있습니다.
1. Vector
- Collections 프레임워크가 포함되어 있지 않던 초기 자바 버전부터 제공한 레거시 클래스입니다.
- 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다.
- 배열과 마찬가지로 정수 인덱스를 이용해 배열에 액세스 할 수 있습니다.
- 스레드 안전(Thread Safe)한 배열로 한 번에 하나의 스레드만 벡터의 메소드를 호출할 수 있습니다.
2. ArrayList
- Collections 프레임워크의 일부이며 java.util 패키지 내에 존재합니다.
- 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다.
- 자바 표준 배열보다 약간 느릴 수 있지만, 배열에서 많은 조작이 필요할 때, 유용하게 사용할 수 있습니다.
- 기본 데이터 타입(int, char 등)을 제네릭으로 결정할 수 없기 때문에 Integer, Character 등 Wrapper Class를 이용해야 합니다.
* Wrapper Class
자바는 데이터를 클래스와 객체 외에 기본형 타입(int, char 등)을 가지는데, 경우에 따라 기본형 타입을 객체로 사용하는 경우가 있습니다. 이때 Wrapper Class를 사용해 기본형 타입의 객체를 참조하여 Integer Class로 int 값을 저장할 수 있습니다.
ex)
int i = 10;
Integer integer = new Integer(10);
integer = new Integer(i); // boxing
integer = i; // auto boxing
i = (int) integer; // unboxing
i = integer; // auto unboxing
3. Vector와 ArrayList 비교
Vector | ArrayList | |
동기화 | 동기 | 비동기 but, Vector와 동일한 클래스 구현 가능 (Collections.synchronizedList(new ArrayList()); |
Thread Safe | 안전, 한 번에 하나의 스레드만 액세스 가능 | 불안전, 여러 스레드가 동시에 액세스 가능 |
성능 | 비교적 느림 | 동기화되지 않았기 때문에 비교적 빠름 |
크기 증가 | 최대 인덱스 초과 시 현재 배열 크기의 100% 증가 | 최대 인덱스 초과 시 현재 배열 크기의 50% 증가 |
사용 | 성능 저하로 사용 지양 | 동기화 처리 시에도 사용 권장 |
'computer science > java' 카테고리의 다른 글
가비지 컬렉션(GC) 알고리즘과 여러 방법::자바 (2) | 2020.07.07 |
---|---|
String, StringBuffer, StringBuilder::자바 (0) | 2020.07.03 |
OOP와 SOLID::자바 (2) | 2020.06.13 |