개발/Java & Kotlin

[Java] 컬렉션 프레임워크 (1)

devhooney 2022. 8. 12. 10:11
728x90

자바의 정석 챕터 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인터페이스는 중복 허용, 저장 순서 유지

https://perfectacle.github.io/2017/08/05/Java-study-015day/

 

Set인터페이스

- Set인터페이스는 중복 허용X, 저장 순서 유지 X

https://perfectacle.github.io/2017/08/05/Java-study-015day/

 

Map인터페이스

- Map인터페이스는 키와 값을 하나로 쌍으로 묶어서 저장

- 키는 중복 허용X

- 값은 중복 허용

- 쌍의 저장 순서는 없음

https://perfectacle.github.io/2017/08/05/Java-study-015day/

 

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는 크기를 변경할 수 없고, 중간에 데이터를 추가하거나 삭제 시 시간이 많이 걸린다.

- 이러한 단점을 보완하기 위한 자료구조

 

728x90

'개발 > 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