728x90
컬렉션 프레임워크
Map
- key와 Value로 구성된 객체를 저장하는 구조
- 데이터나 객체를 담아두기 편함
- key는 중복이 될 수 없고, value값은 중복이 가능
- 기존 저장된 key와 동일한 key로 값을 저장한다면 기존 값은 없어지고 새로운 값을 덮어쓰게 됨
- HashMap, TreeMap 등이 있음
HashMap
해시 함수를 통해 키와 값이 저장되는 위치를 결정
JSON 파일 형태를 가지고 있음
ex) put(key, value) => put('apple','사과')
package test22;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest1 {
public static void main(String[] args) {
//Map 인터페이스로 구현한 클래스 : HashMap 클래스
//Map : key-value 값으로 구성되어 있음
HashMap<String, String> hashMap = new HashMap<String, String>();
//데이터 저장하기 : put(K key, V value) : Associates the specified value with the specified key in this map.
hashMap.put("java", "자바");
hashMap.put("javascript", "자바스크립트");
hashMap.put("pythone", "파이썬");
hashMap.put("ruby", "루비");
System.out.println(hashMap);
System.out.println("=======================");
//key가 있는지 확인 : containsKey(Object key)
System.out.println("'java' key 여부 : "+hashMap.containsKey("java"));
System.out.println("=======================");
//value가 있는지 확인 : containsValue(Object value)
System.out.println("'java' value 여부 : " + hashMap.containsValue("java"));
System.out.println("=======================");
//key로 value 확인(Map의 기본 구조): get(Object key)
System.out.println("java key의 value : " + hashMap.get("java"));
System.out.println("javascript key의 value : " + hashMap.get("javascript"));
System.out.println("=======================");
//map의 크기 : size()
System.out.println("map의 크기" + hashMap.size());
System.out.println("=======================");
//Map에서 데이터를 한번에 조회
//1. keySet() : Returns a Set view of the keys contained in this map.
Set<String> keys = hashMap.keySet();
for(String a : keys) {
System.out.println(a);
}
System.out.println("=======================");
//2. Iterator
Iterator<String> ir = hashMap.keySet().iterator();
while(ir.hasNext()) {
String a = ir.next();
System.out.println(a);
}
}
}
package test22;
import java.util.HashMap;
import java.util.Map;
public class HashMapTest3 {
public static void main(String[] args) {
Map map = new HashMap();
//key
int[] num = {5,4,3,2,1};
//value
String[] dontMint = {"민초1","민초2","민초3","민초4","민초5"};
map.put(num, dontMint);
for(int i = 0 ; i < num.length; i++) {
map.put(num[i], dontMint[i]);
}
System.out.println(map);
//key를 기준으로 오름차순?
}
}
package test22;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest1 {
public static void main(String[] args) {
//Map 인터페이스로 구현한 클래스 : HashMap 클래스
//Map : key-value 값으로 구성되어 있음
HashMap<String, String> hashMap = new HashMap<String, String>();
//데이터 저장하기 : put(K key, V value) : Associates the specified value with the specified key in this map.
hashMap.put("java", "자바");
hashMap.put("javascript", "자바스크립트");
hashMap.put("pythone", "파이썬");
hashMap.put("ruby", "루비");
System.out.println(hashMap);
System.out.println("=======================");
//key가 있는지 확인 : containsKey(Object key)
System.out.println("'java' key 여부 : "+hashMap.containsKey("java"));
System.out.println("=======================");
//value가 있는지 확인 : containsValue(Object value)
System.out.println("'java' value 여부 : " + hashMap.containsValue("java"));
System.out.println("=======================");
//key로 value 확인(Map의 기본 구조): get(Object key)
System.out.println("java key의 value : " + hashMap.get("java"));
System.out.println("javascript key의 value : " + hashMap.get("javascript"));
System.out.println("=======================");
//map의 크기 : size()
System.out.println("map의 크기" + hashMap.size());
System.out.println("=======================");
//Map에서 데이터를 한번에 조회
//1. keySet() : Returns a Set view of the keys contained in this map.
Set<String> keys = hashMap.keySet();
for(String a : keys) {
System.out.println(a);
}
System.out.println("=======================");
//2. Iterator
Iterator<String> ir = hashMap.keySet().iterator();
while(ir.hasNext()) {
String a = ir.next();
System.out.println(a);
}
System.out.println("=======================");
//value만 가져오기 values() : Returns a Collection view of the values contained in this map.
Collection values = hashMap.values();
System.out.println("value만 가져오기 values()");
Iterator<String> ir1 = values.iterator();
while(ir1.hasNext()) {
String b = ir1.next();
System.out.println(b);
}
}
}
key는 중복될 수 없으므로 반환형이 Set, value는 중복이 가능하므로 Collection
package test22;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class HashMapTest1 {
public static void main(String[] args) {
(...생략...)
//3. key, value를 한 번에 들고 오기 Set<Map.Entry<K,V>> entrySet() : Returns a Set view of the mappings contained in this map.
//Map.Entry 인터페이스는 Map 객체의 키와 값에 접근할 수 있도록 해주는 메소드를 가지고 있음(getKey(), getValue()). 키와 값을 추출(entrySet())
Set set = hashMap.entrySet();
Iterator ir2 = set.iterator();
while(ir2.hasNext()) {
Map.Entry<String, String> entry = (Entry<String, String>)ir2.next();
// System.out.println(entry.getKey() + " : " + entry.getValue());
String entryKey = entry.getKey();
String entryValue = entry.getValue();
System.out.println("entryKey = " + entryKey);
System.out.println("entryValue = " + entryValue);
}
}
}
TreeMap
- key 값으로 자료를 정렬하는 경우 사용할 수 있음
- 이진 검색 트리로 구현
- key 값에 해당하는 클래스에 Comparable 인터페이스나 Comparator 인터페이스를 구현해야함
package test22;
import java.util.Iterator;
import java.util.TreeMap;
public class TreeMapTest1 {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1, "ㄱ");
treeMap.put(3, "ㄴ");
treeMap.put(2, "ㄷ");
treeMap.put(4, "ㄹ");
treeMap.put(5, "ㅁ");
System.out.println(treeMap);
System.out.println("============================");
System.out.println(treeMap.get(1)); //key=1인 value
System.out.println(treeMap.firstEntry()); //첫번째 Entry 가져오기
System.out.println(treeMap.lastEntry()); //마지막 Entry 가져오기
System.out.println(treeMap.firstKey()); //첫번째 키 가져오기
System.out.println(treeMap.lastKey()); //마지막 키 가져오기
System.out.println("============================");
treeMap.remove(5);
System.out.println(treeMap);
System.out.println("============================");
Iterator<Integer> ir = treeMap.keySet().iterator();
while(ir.hasNext()) {
Integer key = ir.next();
// System.out.println(key); //key만 가져오기
// System.out.println(ir.next());
System.out.println(key + treeMap.get(key));
}
System.out.println("============================");
}
}
package test22;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
public class TreeMapTest1 {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1, "ㄱ");
treeMap.put(3, "ㄴ");
treeMap.put(2, "ㄷ");
treeMap.put(4, "ㄹ");
treeMap.put(5, "ㅁ");
System.out.println(treeMap);
System.out.println("============================");
System.out.println(treeMap.get(1)); //key=1인 value
System.out.println(treeMap.firstEntry()); //첫번째 Entry 가져오기
System.out.println(treeMap.lastEntry()); //마지막 Entry 가져오기
System.out.println(treeMap.firstKey()); //첫번째 키 가져오기
System.out.println(treeMap.lastKey()); //마지막 키 가져오기
System.out.println("============================");
treeMap.remove(5);
System.out.println(treeMap);
System.out.println("============================");
Iterator<Integer> ir = treeMap.keySet().iterator();
while(ir.hasNext()) {
Integer key = ir.next();
// System.out.println(key); //key만 가져오기
// System.out.println(ir.next());
System.out.println(key + treeMap.get(key));
}
System.out.println("============================");
Iterator<Entry<Integer,String>> ir1 = treeMap.entrySet().iterator();
while(ir1.hasNext()) {
Map.Entry<Integer, String> entry = ir1.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
728x90
'KDT > Java' 카테고리의 다른 글
240418 Java (0) | 2024.04.18 |
---|---|
240408 Java - 시간복잡도 (0) | 2024.04.08 |
240403 Java - 컬렉션 프레임워크 3 (0) | 2024.04.03 |
240401 Java - 컬렉션 프레임워크 2 (0) | 2024.04.01 |
240328 Java - 컬렉션 프레임워크 1 (0) | 2024.03.28 |