본문 바로가기
카테고리 없음

[자바 개념 정리] 컬렉션 프레임워크

by cook_code 2023. 4. 4.
반응형

자바 컬렉션 프레임워크 

- 자바 컬렉션 : 객체를 수집해서 저장

- 프레임 워크 : 사용 방법을 미리 정해놓은 라이브러리

배열의 한계를 해결하고 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함해놓은 것들을 총칭하여 부르는 용어 

 

자바 컬렉션의 주요 인터페이스 3가지

  1. List
  2. Set
  3. Map

List / Set / Map 의 차이점 

Collection
- list (순서를 유지하고 저장, 중복 저장 가능) -> ArrayList/Vector/LinkedList
- set(순서를 유지하지 않고 저장, 중복 저장 안 됨) -> HashSet/TreeSet

Map
(키와 값의 쌍으로 저장, 키는 중복 저장 안 됨)-> HashMap/Hashtable/TreeMap/Properties

List 컬렉션

  • List의 특징 

- 객체를 인덱스로 관리

- 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조

- 동일 객체 중복 저장 가능

- 저장 순서 유지

- null 저장 가능 (객체는 참조하지 않음)

  • List와 LinkedList 차이점


- 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList 보다 LinkedList를 사용하는 것이 좋다.

- 그러나 인덱스 검색이나, 맨 마지막에 객체를 추가하는 경우라면 ArrayList가 더 좋은 성능을 발휘한다.

- LinkedList도 ArrayList처럼 내부 배열에 객체를 저장해서 인덱스로 관리하지만, LinkedList는 인접 참조를 링크해서 체인처럼 관리한다.

  • Vector

-  ArrayList와 달리 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행할 수 있다. (멀티 스레드 환경에서 스레드 세이프하다!)

Set 컬렉션

  • Set의 특징

- 하나의 null만 저장할 수 있다.

- 저장 순서 유지되지 않음, 중복 허용 안 됨

- hashSet은 equals() 메소드로 두 객체를 비교하고 true가 나오면 동일 객체로 판단 후 중복 저장을 하지 않는다.

  • Set 컬렉션 사용 시 객체를 하나씩 가져오는 방법 

- Iterator 사용 

- 향상된 for문 사용

 

Map 컬렉션

  • Map의 특징

- 키와 값으로 구성된 Entry 객체를 저장하는 구조

- 키는 중복 저장이 불가 하지만 값은 중복 저장될 수 있다.

- 같은 키 값으로 저장하면 기존 값은 없어지고 새로운 값으로 대치된다.

  • TreeMap

  • Set 컬렉션 사용 시 객체를 하나씩 가져오는 방법 

- 키를 알고 있는 경우 get() 메소드 사용 

- ketSet()메소드로 모든 키를 Set 컬렉션으로 얻은 다음, 반복자를 통해 키를 하나씩 얻고 get() 메소드를 통해 값을 얻기 

Map<K, V> map = ~;
Set<K> keySet = map.keySet();
Iterator<K> keyIterator = keySet.iterator();
while(keyIterator.hasNext()){
	K key = keyIterator.next();
    V value = map.get(key);
}

- entrySet() 메소드로 모든 Map.Entry를 Set 컬렉션으로 얻은 다음, 반복자를 통해 Map.Entry를 하나씩 얻고 getKey()와 getValue() 메소드를 이용해 키와 값을 얻기 

Set<Map.Entry<K, V>> entrySet = map.entrySet();
Iterator<MAp.Entry<K,V>> entryIterator = entrySet.iterator();
while(entryIterator.hasNext()){
	Map.Entry<K, V> entry = entryIterator.next();
}
반응형