Collection이 하나의 객체를 관리하기 위한 인터페이스라면, Map은 Key-Value 쌍으로 이루어진 객체를 저장하기 위한 인터페이스이다.
K : 객체의 Key의 Type이다.
V : 객체의 Value의 Type이다.
Map에 구현된 Entry Interface -> Key - Value 쌍을 Inner Interface로 구현했다.
Map이 구현해야하는 메소드는 다음과 같다. 주요한 메소드만 설명하고, 나머지는 출처에 가서 확인하자.
... 나머지는 출처에서 확인하자.
Map의 SubInterface는 다음과 같다.
출처 : https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
// HashMap 생성
HashMap<Integer,Integer> hashMap1 = new HashMap<Integer, Integer>();
// HashMap의 용량을 지정하여 생성
HashMap<Integer,Integer> hashMap2 = new HashMap<Integer, Integer>(100);
// 초기 용량과 load factor을 지정하여 생성
HashMap<Integer,Integer> hashMap3 = new HashMap<Integer, Integer>(100, 0.8f);
// 초기 값을 설정해여 생성할 수 있다.
HashMap<Integer,Integer> hashMap3 = new HashMap<Integer, Integer>(){
{
put(1,1);
put(2,2);
put(3,3);
}
};
HashMap<Integer,String> hashMap = new HashMap<Integer, Integer>();
// 값을 추가하며, key, value 순서로 넣어주면 된다.
hashMap.put(1,"One");
hashMap.put(2,"Two");
hashMap.put(3,"Three");
HashMap<Integer,String> hashMap = new HashMap<Integer, Integer>();
hashMap.put(1,"One");
hashMap.put(2,"Two");
hashMap.put(3,"Three");
hashMap.remove(1); // key가 1인 Entry를 제거한다.
hashMap.clear(); // 모든 Entry를 제거한다.
HashMap<Integer,String> hashMap = new HashMap<Integer, Integer>();
hashMap.put(1,"One");
hashMap.put(2,"Two");
hashMap.put(3,"Three");
// 특정 key의 value를 얻기
System.out.println(hashMap.get(1));
// KeySet()을 사용하여 for문을 사용한다.-> Key를 기준으로 순회
for(Integer i : hashMap.keySet()){
System.out.println("Key " + i + "Value " + hashMap.get(i))
}
// entrySet()을 사용하여 for문을 사용한다. -> Entry를 기준으로 순회
for(Entry<Integer,String> e : hashMap.entrySet()){
System.out.println("Key " + e.getKey() + "Value " + e.getValue);
}
// Iterator를 사용한다.
Iterator<Entry<Integer,String>> iterator = hashMap.entrySet().iterator();
while(iterator.hasNext()){
System.out.println("Key " + iterator.next().getKey() + "Value " + iterator.next().getValue());
}
// TreeMap 생성
TreeMap<Integer, Integer> treeMap1 = new TreeMap<Integer,Integer>();
// 초기 값을 설정해여 생성할 수 있다.
TreeMap<Integer,Integer> treeMap2 = new TreeMap<Integer, Integer>(){
{
put(1,1);
put(2,2);
put(3,3);
}
};
TreeMap<Integer,String> treeMap = new TreeMap<Integer, String>();
// 값을 추가하며, key, value 순서로 넣어주면 된다.
treeMap.put(1,"One");
treeMap.put(2,"Two");
treeMap.put(3,"Three");
TreeMap<Integer,String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1,"One");
treeMap.put(2,"Two");
treeMap.put(3,"Three");
treeMap.remove(1); // key가 1인 Entry를 제거한다.
treeMap.clear(); // 모든 Entry를 제거한다.
TreeMap<Integer,String> treeMap = new TreeMap<Integer, Integer>();
treeMap.put(1,"One");
treeMap.put(2,"Two");
treeMap.put(3,"Three");
// 특정 key의 value를 얻기
System.out.println(treeMap.get(1));
// HashMap과 다르게, 정렬을 하여 저장하므로 Entry 출력방식이 다양한다.
System.out.println(treeMap.get(1));
System.out.println(treeMap.firstEntry(1)); //최소 Entry를 출력한다.
System.out.println(treeMap.lastEntry(1)); //최대 Entry를 출렧한다.
System.out.println(treeMap.firstKey()); //최소 key를 출력한다.
System.out.println(treeMap.lastKey()); //최대 key를 출력한다.
// KeySet()을 사용하여 for문을 사용한다.-> Key를 기준으로 순회
for(Integer i : treeMap.keySet()){
System.out.println("Key " + i + "Value " + treeMap.get(i))
}
// entrySet()을 사용하여 for문을 사용한다. -> Entry를 기준으로 순회
for(Entry<Integer,String> e : treeMap.entrySet()){
System.out.println("Key " + e.getKey() + "Value " + e.getValue);
}