[JAVA] 컬렉션 프레임워크 _ Map컬렉션(HashMap)
Map컬렉션
- key와 value가 하나의 데이터로 저장됨
- key는 value를 조회하기 위한 고유한 존재
- Map 인터페이스를 구현한 클래스는 HashMap, TreeMap 등
- index가 없지만 key가 index의 역할을 대신함
- 많은 양의 데이터를 조회하는데 성능이 매우 뛰어남
HashMap
//HashMap 생성(선언)
HashMap<Integer,Character> map = new HashMap<>();
//HashMap에 데이터(요소)추가하기
map.put(100,'A');
map.put(25,'B');
map.put(33,'C');
//map에는 중복되는 value를 추가할 수 있다.
map.put(40,'A');
System.out.println(map);
//map에 key값은 중복될 수 없다. 존재하는 key에 새로운 value를 대입하면 value를 갱신해버림 (이전 value 사라짐)
map.put(100,'Z'); //ex. key100에대한 value가 바뀜!
System.out.println(map);
map에 없는 key로 value를 추가하면 추가
map에 있는 key로 value를 추가하면 갱신
//map에서 데이터 삭제하기
//key를 통해 해당value를 삭제해야함
map.remove(100);
System.out.println(map);
//map에 들어있는 요소의 개수 확인하기
System.out.println("map의 요소의 개수 : "+map.size());

//HashMap 생성(선언)시 key값으로 String도 가능
HashMap<String,Float> map = new HashMap<>();
//HashMap에 데이터(요소)추가하기
map.put("k1", 100.0f);
map.put("k2", 3.14f);
map.put("k3", 4.15f);
System.out.println(map);
//map에서 특정 value값을 조회하기
float result = map.get("k2");
System.out.println(result);
//유용한 map 메서드 (존재여부확인)
//containsKey() : map 객체 안에 인자로 전달된 key값이 존재하면 true, 없으면 false
if(map.containsKey("k3")) {
System.out.println("k3라는 key가 존재합니다.");
}
//containsValue() : map 객체안에 인자로 전달된 value가 있으면 true, 없으면 false
if(map.containsValue(3.14f)) {
System.out.println("3.14라는 value가 존재합니다.");
}

1️⃣ 키보드에서 ID와 PW를 입력받는 코드 작성하기
예시)
ID : AAA
PW : 1111
아이디가 존재하지 않습니다.
ID : LEE
PW : 3333
비밀번호 불일치
ID : KIM
PW : 1111
로그인 성공
HashMap<String,Integer> map = new HashMap<>();
map.put("KIM", 1111);
map.put("LEE", 2222);
map.put("PARK", 3333);
map.put("CHOI", 4444);
//아이디 틀린경우, 아이디는 맞고 비밀번호 틀린경우, 로그인 성공한경우... 총 3가지 경우의 수 !
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("ID : ");
String id = sc.next();
System.out.print("PW : ");
int pw = sc.nextInt();
if(!map.containsKey(id)) { //아이디가 틀렸다? -> 존재하지 않는다! ->map에서 key가 id인데 map에 해당 key값이 없는 경우
System.out.println("아이디가 존재하지 않습니다.");
}else if(map.get(id)!=pw) { //pw와 id 일치여부 검증. pw 존재여부확인이 아님 !!!
System.out.println("비밀번호 불일치");
} else {
System.out.println("로그인 성공");
break;
}
}
