🔲 Array
- 정해진 공간이 있고, 모든 곳에 식별자(인덱스)가 존재한다.
- 객체 생성시 크기를 할당해주어야 한다. (크기 고정)
- 조회가 빠른 대신 삽입/삭제가 느리다. (데이터를 한칸씩 밀어야 하므로.)
- 크기조회는 length
- primitive type(int,byte, char etc), object를 저장한다.
🔲 List
- 식별자가 없다.
- 크기 할당이 필요하지 않다.
- 조회가 느린 대신 삽입/삭제가 빠르다. (연결 리스트 방식 사용.)
- 크기조회는 size()
🔲 ArrayList (Array 장점 + List 장점 취합)
- 동적이고 식별자(인덱스) 가 존재한다.
- capacity 변수를 가지고 있다. 만약 설정한 capacity를 넘어서 더 많은 객체가 들어오면, 배열 크기를 1.5배 증가시킨다.
- object elemnet만 저장 가능하다.
- 크기조회는 size()
🟩 정리
- Array는 조회 속도가 빠르지만 삽입/삭제 속도가 느리고 크기 변경이 불가능
- List는 삽입/삭제 속도가 빠르지만 조회 속도가 느리고 Type-Safety 보장이 어려움
- ArrayList는 Array와 List의 장점을 절충하지만 특정 위치 삽입/삭제 속도가 느림
- LinkedList는 삽입/삭제 속도가 빠르고 Type-Safety 보장이 가능하지만 조회 속도가 느림
🔍 참고 :) Type-Safety
Array
- 동종 데이터 구조: Array는 특정 데이터 타입의 primitives나 특정 클래스의 objects만을 저장
- Type-Safety: 명시된 타입이 아닌 다른 데이터 유형을 저장하면 런타임에 ArrayStoreException 발생
String temp[] = new String[2]; // creates a string array of size 2
temp[0] = new Integer(12); // throws ArrayStoreException
ArrayList
- Generics(제네릭스)를 통해 Type-Safety를 보장한다.
- Generics: Generics를 사용하여 저장할 데이터 유형을 명시
- Type-Safety: 컴파일 시점에 잘못된 데이터 유형 체크
ArrayList<String> list = new ArrayList<>();
🔍 참고 :) 자바 ArrayList 모듈 사용법
list.add("사과");
list.add("바나나");
list.add(1, "참외"); // 사과, 참외, 바나나
String fruit = list.get(0); // "사과"
int size = list.size(); // 3
list.remove(1);
list.remove("바나나");
'Java' 카테고리의 다른 글
[Java의 정석] chapter06 객체지향 프로그래밍 I - 요약정리 (0) | 2024.04.11 |
---|---|
[Java] 김영한의 실전 자바 - 기본편 섹션3,4 객체 지향 프로그래밍,생성자 (0) | 2024.04.09 |
[Java의 정석] chapter05 배열 array - 요약정리 (0) | 2024.04.08 |
[Java] 김영한의 실전 자바 - 기본편 섹션1~2 클래스와 데이터, 기본형과 참조형 (0) | 2024.04.08 |
[Java] 김영한의 자바 입문 - 섹션2~3 변수, 연산자 (0) | 2024.03.31 |