JAVA
Test173.java / 컬렉션 프레임워크(Collection Framework) / Map - Hashtable, HashMap
universedevelope
2022. 10. 29. 00:42
/* ========================================================================
■■■ 컬렉션 프레임워크(Collection Framework) ■■■
=========================================================================*/
// Map → Hashtable, HashMap
// - java.util.Map 인터페이스는
// 키(Key)를 값(Value)에 매핑(mapping)하며
// 동일한 키를 등록할 수 없고, 유일해야 하며,
// 각 키는 한 개의 값 만을 매핑해야 한다.
// 즉, 하나의 키 값에 대응하는 하나의 값을 갖는 자료구조이다.
/*
○ HashMap<K, V> 클래스
- Hashtable 클래스와 마찬가지로 Map 인터페이스에서 상속받은
HashMap 클래스의 기능은 Hashtable과 동일하지만
Synchronozation 이 없기 때문에 동시성 문제가 없다면
(즉, 멀티 스레드 프로그램이 아닌 경우라면)
HashMap을 사용하는 것이 성능을 향상시킬 수 있다.
- 또한, HashMap 은 Hashtable 클래스와는 달리 null 을 허용한다.
*/
import java.util.Map;
import java.util.HashMap;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test173
{
public static void main(String[] args) throws IOException
{
// HashMap 자료구조 인스턴스 생성
// hashMap<String, String> map = new HashMap<Strinig, String>();
Map<String, String> map = new HashMap<String, String>(); // 업캐스팅
// map 이라는 해쉬맵 자료구조에 요소 추가
// → put();
map.put("드라마", "이태원클라스");
map.put("영화", "스파이더맨");
map.put("만화", "슬램덩크");
// System.out.println(map);
// {드라마=이태원클라스, 영화=스파이더맨, 만화=슬램덩크}
// null 입력 시도
map.put(null, null);
map.put("소설", null);
map.put(null, "생각하는사람");
// 위의 데이터 입력 유형에 따라 모든 종류의 데이터 입력이 가능하지만
// 마지막 null 을 key 로 매핑된 생각하는사람 이
// 최초 null 을 key 로 매핑하는 null 을 덮어쓰는 상황이 발생하게 된다.
// 즉 HashMap 은 null 을 하나의 고유한 key로 간주한다.
System.out.println(map);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("카테코리,타이틀 입력(컴마 구분) : ");
String [] temp;
for (String str ; (str=br.readLine()) != null;) // Ctrl + z : null
{
temp = str.split(",");
if (temp.length<2)
{
System.out.print("카테코리,타이틀 입력(컴마 구분) : ");
continue;
}
map.put(temp[0].trim(), temp[1].trim());
System.out.println(map);
}
}
}
728x90