2013년 4월 29일 월요일

The Collection Framework

Collection (컬랙션)
Collection (컬랙션)의 의미는 객체들의 집합을 말함. 자바에서 Collection Framework를 지원하는 이유는 프로그래머가 자료구조에 대해 신경 쓰지 않고 프로그램을 쉽게 작성하고 성능을 향상시킬 수 있도록 하기 위해 사용. Collection Interface를 상속한 Set, list를 컬랙션이라고 말하지만 Map도 알아보지만 Map interface를 구현한 클래스들은 key()value()으로 객체를 다루기 때문에 진정한 컬랙션은 아님
 
내 용
아이템 중복 가능 여부
Set
정렬순서 없음, 아이템 중복 불가능.
X
List
인덱스로 정렬, 아이템 중복 가능
O
Map
중복 불가능한 키로 정렬 된다.
O

Set(집합)
Set interface는 요소들의 순서가 정렬되어 있지 않으며, 중복된 요소를 포함할 수 없는 컬랙션
클래스
특 징
HashSet
집합의 요소들은 정렬되지 않는다. 동기화 처리가 되어 있지 않다.
LinkedHashSet
집합의 요소들은 추가된 순서대로 정렬된다(insertion order). 동기화 처리가 되어 있지 않다.
TreeSet
SortedSet interface로 구현된다. 집합의 요소들이 오름차순으로 정렬됨.(ascending order, natural order). 동기화 처리가 되어 있지 않다.
메소드명
매개변수
기 능
add()
Object o
지정된 요소가 집합에 존재하지 않는다면 추가
clear()
-
집합에 있는 모든 요소를 제거
contains()
Object o
집합에 지정된 요소가 있다면 true를 리턴
equals()
Object o
지정된 객체가 이 집합과 동일한지를 비교
isEmpty()
-
집합에 어떤 요소도 추가되어 있지 않다면 true를 리턴
remove()
Object o
지정된 요소가 존재한다면 제거
size()
-
집합의 요소의 수를 리턴
toArray()
-
집합에 있는 모든 요소를 배열로 리턴

List
List interface는 중복된 요소를 포함할 수 있으며, 요소들이 추가된 순서대로 정렬되는 컬래션
클래스
특 징
ArrayList
크기가 동적으로 늘어날 수 있는 배열. 인덱스로 정렬됨 (index order). null을 포함한 모든 요소를 허락. 동기화 처리가 되어 있지 않음
Vector
크기가 동적으로 늘어날 수 있는 배열. 인덱스로 정렬(index order), 배열처럼 인덱스를 통해 요소에 접근. 동기화 처리가 되어 있음
LinkedList
링크드 리스트를 구현하기 위한 클래스. 인덱스로 정렬(index order), null을 포함한 모든 요소를 허락. 동기화 처리가 되어 있지 않음
메소드 명
매개변수
기 능
add()
int index,
Object element
지정된 요소를 지정된 위치에 추가
add()
Object o
지정된 요로를 리스트의 끝에 추가
clear()
-
리스트의 모든 요소를 제거
contains()
Object o
지정된 요소를 포함하고 있다면 true를 리턴
equals()
Object o
지정된 요소와 리스크가 동일한지를 비교
get()
int index
리스트에서 지정된 위치의 요소를 리턴
isEmpty()
-
리스트가 어떤 요소도 포함하고 있지 않으면 true를 리턴
remove()
int index
리스트의 지정된 위치의 요소를 제거
size()
-
리스트에서 요소의 수를 리턴

Map
Map interfacekeyvalue를 매칭시키며 중복된 키를 포함할 수 없도록 디자인되어 있는 컬랙션
SortedMap 인터페이스도 Map 인터페이스에서 상속
 
내 용
HashMap
키와 아이템 null 불가. 정렬 X. 동기화 X
TreeMap
키가 오름차순으로 정렬. 동기화 X
LinkedHashMap
키가 추가된 순서로 정렬. 키와 아이템 null 가능. 동기화 X
WeekHashMap
정렬 X, 키와 아이템 null 가능. 동기화 X
Hashtable
정렬 X 키와 아이템 null 불가. 동기화 X
메소드명
매개변수
기능
clear()
-
맵의 모든 키와 요소를 제거
containsKey()
Object key
맵이 지정된 키를 가지고 있다면 true를 리턴
containsValue()
Object value
맵이 지정된 값과 관련된 키들을 가지고 있다면 true를 리턴
equals()
Object o
지정된 요소와 맵이 동일한지를 비교
get()
Object key
맵에서 지정된 키에 대한 요소를 리턴
isEmpty()
-
이 맵이 키와 요소를 가지고 있지 않다면 true를 리턴
put()
Object key,
Object value
지정된 키와 값을 추가
remove()
Object key
키와 관련된 요소를 제거
size()
-
맵에서 키/요소 쌍의 수를 리턴

Hashcode
메모리에 실행된 객체의 주소를 빠르게 효율적으로 찾기 위해 사용되느 코드로써 자바가상머신의 hash함수에 의해 생성
Hashcode의 제약사항
프로그램이 시작되는 동안 같은 객체상에서 hashcode() 메소드가 여러번 호출되어도 항상 같은 값을 반환
a.equals(b)true라면 a.hashcode() == b.hashcode()true가 된다.
a.equals(b)false라면 a.hashcode() == b.hashcode()false가 되어야 하지만 강제하지 않는다. true가 될 수 도 있음
hashcode는 객체를 가리키기 위한 일련의 숫자의 조합이기 때문에 프로그램이 실행된 이후에는 항상 같은 값을 반환

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...