자바의 정석 챕터 11을 읽고 정리
1. 컬렉션 프레임워크
- 데이터 군을 저장하는 클래스들을 표준화한 설계
- 컬렉션은 다수의 데이터를 말한다.
1.1 컬렉션 프레임워크의 핵심 인터페이스
- 컬렉션 데이터 그룹은 3가지
(1) List: 순서가 있는 데이터 집합. 중복 허용
구현클래스: ArrayList, LinkedList, Stack, Vector 등
(2) Set: 순서가 없는 데이터 집합, 중복 허용X
구현클래스: HashSet, TreeSet 등
(3) Map: 키와 값의 쌍으로 이루어진 데이터 집합. 순서 없음. 키는 중복 허용X. 값은 중복 허용
- Vector나 Hashtable은 사용하지 말고, ArrayList, HashMap 사용하기
Collection인터페이스
- List와 Set의 조상
add, clear, remove 등
List인터페이스
- List인터페이스는 중복 허용, 저장 순서 유지
Set인터페이스
- Set인터페이스는 중복 허용X, 저장 순서 유지 X
Map인터페이스
- Map인터페이스는 키와 값을 하나로 쌍으로 묶어서 저장
- 키는 중복 허용X
- 값은 중복 허용
- 쌍의 저장 순서는 없음
Map.Entry 인터페이스
- Map의 내부 인터페이스
- 키, 값을 좀 더 잘 다루기 위한 인터페이스
- getKey(), getValue() 등..
1.2 ArrayList
- ArrayList는 Object배열을 이용해서 데이터를 순차적으로 저장
- 두 배열에서 중복을 제거하는 코드
ArrayList list1 = new ArrayList(5);
list1.add(new Integer(2));
list1.add(new Integer(3));
list1.add(new Integer(1));
list1.add(new Integer(5));
list1.add(new Integer(7));
ArrayList list2 = new ArrayList(list1.subList(1, 4)); // 리스트 부분 복사
Collections.sort(list1);
Collections.sort(list2); // 리스트 정렬
for (int i = list2.size()-1; i>= 0; i--) {
if (list1.contain(list2.get(i))) list2.remove(i);
}
- ArrayList를 앞에서부터 삭제하면 빈 공간을 채우기 위해서 나머지 요소들이 자리 이동을 하기 때문에 뒤에서부터 제거
- ArrayList는 순차적으로 저장하거나 뒤에서부터 제거하면 작업시간이 짧다.
- 배열의 중간에 데이터를 추가하거나 삭제할 경우 데이터의 위치 이동 때문에 작업 시간이 길어진다.
1.3 LinkdedList
- ArrayList는 크기를 변경할 수 없고, 중간에 데이터를 추가하거나 삭제 시 시간이 많이 걸린다.
- 이러한 단점을 보완하기 위한 자료구조
'개발 > Java & Kotlin' 카테고리의 다른 글
[Java] Generics (1) | 2022.08.17 |
---|---|
[Java] 컬렉션 프레임워크 (2) (0) | 2022.08.16 |
[Spring] 스프링 시큐리티 (3) (2) | 2022.08.12 |
[Java] 객체 지향 설계 5원칙 - SOLID (0) | 2022.08.06 |
[Java] 자바가 확장한 객체 지향 (0) | 2022.08.04 |