Studynote/Computer Science 12

[정리]Java chapter11 컬렉션 프레임웍과 유용한 클래스

e.sunie 2018. 11. 5. 01:13

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()를 정의