본문 바로가기
Java의 정석/컬렉션 프레임워크

Collection, List, Set, Map

by Hwanii_ 2023. 9. 17.
728x90

ch11 - 3 Collection 인터페이스의 메서드

 

List 와 Set 인터페이스 에서 공통 부분을 뽑아낸 인터페이스가 있다.

>> Collection 인터페이스.

 

 

기본적으로 데이터의 추가, 검색, 삭제 등의 메서드를 가진다.

 

 

 

ch11 - 4 List 인터페이스 - 순서 O, 중복 O

 

 

List 인터페이스를 구현받은 핵심 클래스는 2가지 이다.

 

ArrayList 와 LinkedList 이다.

 

Vector과 Stack은 컬렉션 프레임워크가 표준화 되기 이전의 오래된 클래스들 이다.

 

(Vector 클래스는 ArrayList 클래스와 거의 유사 하다)

 

 

마찬가지로 객체 (데이터) 를 추가, 검색, 삭제 하는 메서드가 있다.

 

당연히,

ArrayList 클래스는 List 인터페이스를 구현한 클래스 이고,

List 인터페이스는 Collection 인터페이스를 상속 받은 자식 인터페이스 이기 때문에,

Collection 인터페이스 내부에 있는 모든 메서드 들도 당연히 사용 가능 하다.

 

 

 

ch11 - 5 Set 인터페이스 - 순서 X, 중복 X

 

 

Set 인터페이스를 구현한 클래스에서 핵심 클래스는 아래와 같다.

 

HashSet 과 TreeSet 이다.

 

 

Set 인터페이스의 메서드는 Collection 인터페이스의 메서드와 완전히 동일 하다.

 

하지만 Set은 집합이기에 집합과 관련된 메서드가 있다.

Collection에 변화가 있으면 true를 반환 하고, 아니면 false를 반환 한다.

 

 

합집합, 차집합, 교집합 등을 구하고 싶을 때, HashSet 과 TreeSet 클래스를 사용 하면 편하게 구할 수 있다.

 

 

 

ch11 - 6 Map 인터페이스 - 순서 X, 중복 (키 X, 값 O)

 

 

Map 인터페이스를 구현한 핵심 클래스는 아래와 같다.

 

HashMap 클래스와 TreeMap 클래스 이다.

 

만약에 순서를 유지 해야한다면 그때는 LinkedHashMap 클래스를 사용 하면 된다.

 

참고로,

Hashtable은 컬렉션 프레임워크가 표준화 되기 이전에 예전 버전의 클래스 인데,

HashMap 클래스와 다르게 동기화를 지원 한다.

 

HashMap 클래스는 동기화를 지원 하지 않으나, 대신에 따로 동기화를 처리 할 수 있는 방법이 제공 된다.

 

동기화는 스레드 에서 자세히 다뤄보자.

 

 

Map 인터페이스의 메서드는 위와 같다.

 

마찬가지로 데이터 (객체) 를 검색 하고, 추가하고, 삭제하는 메서드가 있고,

 

Set entrySet() 메서드와,

Set keySet() 메서드와,

Collection values() 라는 메서드가 있다.

 

Set ketSet() 메서드는 키만 뽑아 올 수 있고,

Collection values() 메서드는 값만 뽑아 올 수 있다.

 

키와 값 한쌍을 "엔트리" 라고 부르는데, 어떤 특정한 맵에 저장된 키와 값 한쌍을 뽑아 오고 싶다면 ?

그때,

Set entrySet() 메서드를 사용 하면 된다.

 

반환값이 Set (집합) 이다.

참고로,

Collection values() 메서드의 반환값은 Collection 타입인데,

왜그러냐면,

값은 중복이 있어도 되고, 없어도 되기 때문 이다.

(비밀번호를 생각하면 된다. 아이디는 유일하지만, 비밀번호는 같을 수 있다)

 

Collection 인터페이스의 자손으로는 List도 있고 Set도 있기 때문에,

값을 맘대로 뽑아 올 수 있으므로 반환 타입이 Collection 인것을 알아 놓자.

 

 

 

반응형