[정리]Java chapter11 컬렉션 프레임웍과 유용한 클래스
1. 컬렉션 프레임웍
컬렉션 프레임웍이란?
: 데이터 군을 저장하는 클래스들을 표준화한 설계
(1)컬렉션 프레임웍의 핵심 인터페이스 : List, Set, Map
컬렉션 프레임웍에서는 컬렉션을 크게 3가지 타입이 존재하낟고 인식, 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의
인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의
1. Collection인터페이스
|
Collection인터페이스는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 등 컬렉션을 다루는 데 가장 기본적인 메서드를 정의
2. List인터페이스
List인터페이스는 중복을 허용, 저장순서가 유지 되는 컬렉션 구현
- ArrayList, LinkedList, Vector, Stack
3. Set인터페이스
Set인터페이스는 중복 허용x, 저장순서가 유지 x
-HashSet, TreeSet
4. Map인터페이스
Map인터페이스는 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스 구현
키는 중복x, 값은 중복 허용
기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남음
- Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap
5. Map,Entry
Map.Entry인터페이스는 Map인터페이스의 내부 인터페이스
-내부인터페이스?
: 내부클래스처럼 인터페이스도 인터페이스 안에 인터페이스를 정의하는 내부 인터페이스를 정의 할 수 있음
Map에 저장되는 키-값쌍을 다루기 위해 내부적으로 Entry인터페이스를 정의해 놓음
(2) 동기화
멜티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근 가능
→ 데이터의 일관성을 유지하기 위해 동기화 필요
(3) Vector와 ArrayList
공통점 |
-List인터페이스를 구현(저장순서유지, 중복허용) -데이터의 저장공간으로 배열 사용
|
차이점 |
-vector는 멀티쓰레드에 대한 동기화가 되어있으나 ArrayList는 그렇지 않다. |
-Object배열을 이용해서 데이터를 순차적으로 저장
-ArrayList는 removeRange()를 제외한 모든 메서드가 Vector의 메서드와 일치
(4) LinkedList
-배열의 장단점
장점 : 가장 기본적인 형태의 자료구조, 간단한 구조, 쉬운 사용, 데이터를 읽어오는 시간이 가장 빠름
단점 : 1. 크기를 변경할 수 없다. 2. 비순차적인 데이터 추가 또는 삭제에 시간이 많이 걸린다.
이런 단점 보완을 위해 LinkedList 개발
배열은 모든 데이터가 연속적으로 존재, 링크드리스트는 불연속적으로 존재&데이터를 서로 연결한 형태로 구성
- 링크드리스트의 삭제
삭제하고자 하는 요소의 이전요소가, 삭제하고자 하는 요소의 다음요소를 차조하도록 변경
단, 하나의 참조만 변경하면 삭제가 이루어짐
- 링크드리스트의 추가
새로운 요소 생성, 추가하고자하는 위치의 이전 요소의 참조를 새로운 요소에 대한 참조로 변경, 새로운 요소가 그 다음 요소를 참조하도록 변경
뭐야..........자료구조잖아 스킵!!!
(5)Stack과 Queue
역시 자료구조!!!스킵!!!!!!!!!!!
(6) Enumeration, Iterator, Listlterator
컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스
1. Iterator
컬렉션 프레임웍은 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화
컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의, Collection인터페이스에는 Iterator를 반환하는 iterator()를 정의