프레임워크(framework) : 표준화, 정형화된 체계적인 프로그래밍 방식, 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할
컬렉션 프레임워크(collections framework) : 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식, 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공
컬렉션 클래스(collection class) : 다수의 데이터를 저장할 수 있는 클래스 ex) Vector, ArrayList, HashSet
컬렉션 프레임워크의 핵심 인터페이스
컬렉션 프레임워크 핵심 인터페이스간의 상속계층도
List와 Set을 구현한 컬렉션 클래스들은 서로 많은 공통부분이 있어서, 공통된 부분을 뽑아 Collection 인터페이스를 정의 할수 있었지만 Map 인터페이스는 이들과는 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함 X
Collection 인터페이스
Collection 인터페이스에 정의되어있는 메서드들
List 인터페이스
List의 상속계층도
Vector : ArrayList 클래스와 동일한 내부 구조를 가지고 있지만 Vector 클래스는 동기화를 지원한다. 그렇기 때문에 여러개의 스레드가 동시에 Vector 객체의 접근 하지 못해 이전 작업이 수행이 완료되어야 접근할 수 있다. 그래서 멀티스레드 환경에서 안전하게 객체 내의 데이터를 변경 할 수 있다. 다만, 멀티스레드를 지원하기 때문에 ArrayList보다는 성능이 떨어진다는 단점을 가지고 있다.
Stack : 선입후출(LIFO)의 구조를 가지는 자료구조이며 Vector 클래스를 상속받아 확장한다. 그렇기 때문에 Vector 클래스의 문제점을 그대로 이어받는다.
ArrayList : 내부적으로 배열을 만들어 인덱스와 메모리 연속성의 특징을 가지는 클래스
LinkedList : ArryaList처럼 배열의 구조를 이용하는 것이 아니라 Node라는 객체의 연결을 통해 리스트를 구현한다. 때문에 LinkedList는 순차접근을 통해 데이터에 접근한다.
List 인터페이스에 정의되어있는 메서드들
Set 인터페이스
Set의 상속계층도
HashSet : Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스이며, 중복된 데이터를 저장할 수 없으며 순서를 유지하지 않는다.
TreeSet : 이진 검색 트리라는 자료구조 형태로 데이터를 저장하는 컬렉션 클래스이다. 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장함으로 저장순서를 유지하지 않는다.
Set 인터페이스에 정의되어 있는 메서드들
Collection 인터페이스와 동일
Set은 집합이기 때문에 집합과 관련된 메서드가 있음.
집합과 관련되 메서드들
Map 인터페이스
Map의 상속계층도
HashMap : 키의 순서가 무작위로 섞여있으며 구현은 연결리스트로 이루어진 배열로 되어있다. null key와 null value를 모두 허용
LinkedHashMap : 키의 순서는 삽입한 순서대로 정렬되어 있다.
TreeMap : 키의 순서는 정렬되어있다.
Hashtable : HashMap과 동일하지만 null key와 null value를 허용하지 않고 동기화를 지원한다.