본문 바로가기

Programming 언어/JAVA

18. 자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크

1. 컬렉션 프레임워크

프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리

1. java.util 패키지에 구현

2. 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음

3. 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요

Collection과 Map 크게 두 갈래

2. Collection 인터페이스

하나의 객체를 관리하기 위한 메서드가 선언된 인터페이스

(하위에 List와 Set 인터페이스가 있음)

List 인터페이스

1. 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스

2. 자료구조 리스트(배열,연결리스트)의 구현을 위한 인터페이스

3. 중복을 허용

4. ArrayList, Vector, LinkedList, Stack, Queue 등

Set 인터페이스

1. 순서와 관계없이 중복을 허용하지 않고 유일한 값을 관리하는데 필요한 메서드가 선언

2. 아이디, 주민번호, 사번등을 관리하는데 유용

3. 저장된 순서와 출력되는 순서는 다를 수 있음

4. HashSet, TreeSet 등

3. Map 인터페이스

1. 쌍(pair)으로 이루어진 객체를 관리하는데 사용하는 메서드들이 선언된 인터페이스

2., 객체는 key-value의 쌍으로 이루어짐

3. key는 중복을 허용하지 않음

4. HashTable, HashMap, Properties, TreeMap 등이 Map 인터페이스를 구현함

4. Collection 요소를 순회하는 Iterator

요소의 순회란?

컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하는것

1. 순서가 있는 List 인터페이스의 경우는 lterator를 사용하지 않고 get(i) 메서드를 활용할 수 있음

2. Set 인터페이스의 경우 get(i) 메서드가 제공되지 않으므로 Iterator를 활용하여 객체를 순회

5. Iterator 사용하기

boolean hasNext()

이후에 요소가 더 있는지를 체크하는 메서드 -> 요소가 있다면 true를 반환

E next()

다음에 있는 요소를 반환 

void remove()

현재 요소를 삭제합니다.

1. 해당 메서드 호출 전 next()를 호출하여 현재 요소를 지정해야함

2. 일부 컬렉션에서는 지원을 안할 수 있으면 이 경우에는 UnsupportedOperationException 발생

remove 예

위와 같은 코드에서 arrayList는 

ArrayList<Member> arrayList = new ArrayList<>(); -> 이렇게 객체를 선언해놔야함

이후에

Iterator<Member> ir = arrayList.iterator(); -> 선언

(hasNext로 다음 요소가 있는지 확인하고 next()로 반환하는 느낌?)