컬렉션 프레임워크 (List, Set, Map)

김지윤·2023년 2월 17일
0

자바

목록 보기
11/11
  • java.util 패키지에 포함되어 있다.
  • 제네릭 타입이다.

인터페이스 List, Set, Map은 각각
List : ArrayList, Vector, LinkedList
Set : HashSet, TreeSet
Map : HashMap, Hashtable, TreeMap, Properties
클래스들을 가지고 있다.

여러 메소드를 사용하기 위해선 인터페이스를 공부하면 된다.



List 컬렉션, 인터페이스

  • 객체의 번지가 저장된다. index를 통해 접근
  • 기본 타입은 boxing되어 번지가 저장된다.

< ArrayList >

사용시작

  • 원하는 타입이 있다면 : List< E> list = new ArrayList<>();
  • 여러 타입을 저장할 때 : List list = new ArrayList();

삭제

  • void clear() : 전부 삭제
  • E remove(int index) : index의 값을 삭제하고 다시 정렬됨

< Vector >

멀티 스레드 환경에서 동시 사용 불가능하다.
동기화된 메소드로 되어있다.

< LinkedList >

  • ArrayList에서는 삽입, 삭제할 경우 뒤에 있는 값들이 다 움직여야해서 시간이 더 걸린다.
  • LinkedList는 객체를 기준으로 왼쪽에 객체가 연결되어 있고, 오른쪽에 객체가 연결되어 있다.
    그래서 삽입, 삭제할 경우 양 옆의 연결 상태만 수정해 주면 되므로 시간면에서 훨씬 효율적이다.



Set 컬렉션, 인터페이스

  • 중복 저장 불가, 순서 없음
  • 수학의 집합, 섞여있는 구슬 주머니와 비슷하다.
  • index가 없으므로 Iterator를 통해 접근

Set 인터페이스의 메소드

  • iterator() : 반복해서 객체를 가져옴
  • hasNext() : 다음에 값이 있는지
  • next() : 다음으로 가기
Set<String> set = ...;
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()) {
	String item = iterator.next();
}

for문을 이용해 삽입, 삭제 불가 -> for문은 반복 횟수를 정해놓고 시작하는데, 중간에 삽입이나 삭제를 해버리면 for문의 반복 횟수에 영향을 주어 예외가 발생한다.



Map 컬렉션, 인터페이스

Map.Entry는 키와 값으로 이루어져 있고,
Map.Entry 객체의 번지를 저장하는 것이 Map 컬렉션이다.

  • get(K) : 키에 해당하는 value 반환
  • Set<Map.Entry<K,V>> entrySet() : Map.Entry 객체를 Set에 담아 반환
  • Set< K> keySet() : 모든 키를 Set에 담아 반환
  • Collection< V> values() : 모든 value를 Collection에 담아 반환



<구현 클래스 종류>

HashMap

  • Map<K, V> map = new HashMap<K, V>();
    -> K, V는 참조 타입만 가능
    ex. Map<String, Integer> = new HashMap<>();
  • 키의 중복 확인 (동등 객체인지 확인)
    hashCode 같은지 확인 -> equals 같은지 확인

HashTable

  • synchronized 메소드로 구성되어 있어서 여러개의 스레드를 사용할 때 용이하다.

Properties

  • . properties 파일을 읽을 때 사용한다.
  • 키와 값이 모두 String 타입이다.
  • HashTable의 자식 클래스이다.
  • 파일 내용 읽는 메소드 : InputStream getResourceAsStream(String name)
profile
꾸준하게 공부하고 기록하는 개발자

0개의 댓글