본문 바로가기

카테고리 없음

Collection

1. Collection 이란?

자바에서 제공하는 자료구조(메모리상에서 자료를 구조적으로 처리하는 방법)를 담당하는 프레임워크.

추가, 삭제, 정렬 등의 기능처리가 간단하게 해결되어 자료구조적 알고리즘을 구현할 필요 없음.

(java.util 패키지에 포함되며, 인터페이스를 통해 정형화된 방법으로 다양한 컬렉션 클래스 이용가능)

 

2.사용 이유

1) 배열의 문제점 

ㄱ) 한 번 지정한 크기를 변경할 수 없다.(늘리거나 줄이려면 다른 곳에 저장 후 재 선언 필요)

ㄴ)기록된 데이터에 중간 위치의 추가 삭제가 불편하다.(추가, 삭제할 데이터부터 마지막 데이터까지 하나씩 움직여야함)

ㄷ)한 타입의 데이터만 저장 가능

 

2)컬렉션의 장점

ㄱ)저장하는 크기의 제약이 없다.(자동으로 크기가 증가한다)

ㄴ)추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결된다.(자료를 구조적으로 처리하는 자료구조가 내장)

ㄷ)여러 타입의 데이터가 저장가능(단 객체만 저장할 수 있기 때문에 필요에따라 Wrapper클래스 사용

 

3.컬렉션 종류

 

1)Collection 을 상속하는 인터페이스
ㄱ)List -> 넣는 순서대로 쌓임, 중복가능  (변수명.add(인덱스, 값) -> 추가, 변수명.set(인덱스, 값)-> 변경
   -ArrayList : 사용하기 편하고 수정도 편함. 가장 많이씀 (크기 자동설정시 10)
   -Vector : 어레이리스트 + 스레드 세이프 기능 -> 동기화시 필요 (다만 스레드 세이프등 기능이 많아서 느림)
   -LinkedList : 검색용

(인접 참조를 링크해 체인처럼 관리(삽입/수정시 링크만 변경 -> 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음)) 

ㄴ)Set -> 넣으면 자동정렬, 중복 불가 (null도 중복 안됨)
-HashSet : Hash함수를 사용하여 처리속도가 빠름. 동일 객체 뿐아니라 동등 객체도 중복하여 저장하지 않음

                ( Hash코드 재정의 오버라이딩통해 주소값 다르지만 값이 같을 경우 중복제거)

-LinkedHashSet : HashSet과 거의 동일하지만 Set에 추가되는 순서를 유지한다는 점이 다름
-TreeSet : 트리구조로 크고작고를 비교 -> 오름차순 자동정렬


** Iterator : 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스, 내용을 앞에서 부터 검색하여 목록화한다.

 -> ListIterator : Iterator를 상속받아 양방향(앞부터/뒤부터) 가능

 사용은 List와 Set에서(Map은 내용을 List와 Set으로 변경 후 사용)

 

2)Collection을 상속하진 않지만 비슷한 기능을 하는 것

Map : 키와 값이 한쌍으로 묶여 있으며 키와 값은 모두 객체. 키는 중복불가(Set의 특성), 값은 중복가능(List의 특성)

키가 중복되는 경우 , 기존에 있는 키에 해당하는 값을 덮어 씌움

ㄱ)HashMap : 키객체는 hashCode()와 equals()를 재정의해 동등 객체가 될 조건을 정해야함, 때문에 키 타입은 hashCode()와 equals()메소드가 재정의 되어 있는 String타입을 주로 사용

 

ㄴ)HashTable: 키 객체 만드는 법은 HashMap과 동일하나 HashTable은 스레드 동기화가 된 상태이기 때문에, 복수의 스레드가 동시에 HashTable에 접근해 객체를 추가, 삭제하더라도 스레드에 안전(스레드세이프 기능)

 

ㄷ)TreeMap: 이진트리를 기반으로 한 Map컬렉션으로, 키와 값이 저장된 Map.Entry를 저장하고 왼쪽과 오른쪽 자식 노드를 참조하기 위한  두 개의 변수로 구성

 

ㄹ)Properties : 키와 값을 String타입으로 제한한 Map컬렉션. 주로 Properties는 프로퍼티(.properties)파일을 읽어 들일 때 주로사용

 

**properties

- 옵션정보, 데이터베이스연결정보, 국제화(다국어)정보를기록하여 텍스트파일로활용
- 애플리케이션에서주로변경이잦은문자열을저장하여관리하기 때문에 유지보수를편리하게만들어줌
- 키와값이 ‘=‘기호로연결되어있는텍스트파일로 ISO 8859-1 문자셋으로저장되고, 한글은유니코드(Unicode)로변환되어저장