키워드 정리
많이 사용하는 자료구조를 편리하게 사용할 수 있도록 java.util 패키지에서 제공하는 인터페이스와 구현 클래스.
컬렉션(Collection) : 객체의 저장
프레임워크(Framework) : 사용 방법을 정해놓은 라이브러리
주요 인터페이스
List, Set, Map
배열과 비슷하지만 배열과는 다르게 용량(capacity)을 동적으로 바꾼다.
특징
인덱스로 관리.저장 용량이 자동으로 증가됨.List 인터페이스의 구현클래스
ArrayList : 삽입, 삭제에 성능 안 좋음, 맨 마지막에 객체 삽입, 인덱스로 값 찾기에 적합.
Vector : ArrayList와 동일한 내부 구조이나, 동기화된(synchronized) 메소드로 구성돼있음. 그래서 스레드에 안전(thread safe)함
LinkedList : 인접 참조를 링크해서 체인처럼 관리. 맨 마지막에 객체 삽입, 인덱스로 값 찾기에 성능 안 좋음 삽입, 삭제에 좋음.
수학의 집합과 같이 서로 다른 데이터들을 순서 없이 저장한다.
특징
Set 인터페이스의 구현클래스
HashSet, LinkedHashSet, TreeSet
키(key)와 값(value)로 구성되어 있다.
특징
Map 인터페이스의 구현클래스
HashMap, Hashtable(HashMap과 같은 구조, 스레드에 안전), LinkedHashMap, TreeMap, Properties
LIFO(후입선출) : 나중에 넣은 객체가 먼저 빠져나감 --> Stack 클래스
FIFO(선입선출) : 먼저 넣은 객체가 먼저 빠져나감 --> Queue 인터페이스
Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList이다.
혼공학습단 선택 미션

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("신용권", 85);
map.put("홍길동", 90);
map.put("동장군", 80);
map.put("홍길동", 95);
System.out.println("총 Entry 수: "+map.size());
System.out.println("\t홍길동 : "+map.get("홍길동"));
System.out.println();
Set<String> keySet = map.keySet();
Iterator<String> keyIterator = keySet.iterator();
while(keyIterator.hasNext())
{
String key = keyIterator.next();
Integer value = map.get(key);
System.out.println("\t"+key+" : "+value);
}
System.out.println();
map.remove("홍길동");
System.out.println("총 Entry 수: "+map.size());
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entrySㄴet.iterator();
while(entryIterator.hasNext())
{
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("\t"+key+" : "+value);
}
System.out.println();
map.clear();
System.out.println("총 Entry 수: "+map.size());
}
}
