HashMap

canyi·2023년 6월 23일
0

java m1

목록 보기
35/40

HashMap - 순서X, 중복(키X,값O)

  • Map 인터페이스를 구현
  • 해싱 기법을 사용하여 데이터가 많아도 검색이 빠름
  • Collection 인터페이스와는 다른 저장 방식을 가짐(Key, Value) - Key는 Value를 찾기 위해 사용
  • 순서를 유지하려면, LinkedHashMap클래스를 사용하면 됨

HashMap – 주요 메서드

코드 예시

HashMap, map.put()

import java.util.*;

public class ex17_HashMap {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("myId", "1234");
		map.put("asdf", "1111");
		map.put("asdf", "1234");

		Scanner sc = new Scanner(System.in);	// 화면으로부터 라인단위로 입력받는다.

		while(true) {
			System.out.println("id와 password를 입력해주세요.");
			System.out.print("id :");
			String id = sc.nextLine().trim();

			System.out.print("password :");
			String password = sc.nextLine().trim();
			System.out.println();

			if(!map.containsKey(id)) {
				System.out.println("입력하신 id는 존재하지 않습니다. 다시 입력해주세요.");
				continue;
			} 
			
			if(!(map.get(id)).equals(password)) {
				System.out.println("비밀번호가 일치하지 않습니다. 다시 입력해주세요.");
			} else {
				System.out.println("id와 비밀번호가 일치합니다.");
				break;
			}
		} // while
	} // main의 끝
}

입력1

입력2

map.put() 같은 경우 수정기능임으로 똑같은 key 같은 경우 다른 value가 들어가면 value만 변경이 되서 1111 > 1234로 덮임

HashMap_iterator

import java.util.*;

public class ex18_HashMap_iterator {
	public static void main(String[] args) {
		Map<String, Integer> map = new HashMap();
		map.put("김자바", 90);
		map.put("김자바", 100);
		map.put("이자바", 100);
		map.put("강자바", 80);
		map.put("안자바", 90);

		Set set = map.entrySet();
		Iterator it = set.iterator();

		while(it.hasNext()) {
			Map.Entry e = (Map.Entry)it.next();
			System.out.println("이름 : "+ e.getKey() + ", 점수 : " + e.getValue());
		}

		set = map.keySet();
		System.out.println("참가자 명단 : " + set);

		Collection values = map.values();
		it = values.iterator();

		int total = 0;
		
		while(it.hasNext()) {
			int i = (int)it.next();
			total += i;
		}

		System.out.println("총점 : " + total);
		System.out.println("평균 : " + (float)total/set.size());
		System.out.println("최고점수 : " + Collections.max(values));
		System.out.println("최저점수 : " + Collections.min(values));
	}
}

HashMap_카운팅


import java.util.*;

public class ex19_HashMap_카운팅 {
	public static void main(String[] args) {
		String[] data = { "A","K","A","K","D","K","A","K","K","K","Z","D" };

		Map<String, Integer> map = new HashMap();

		for(int i=0; i < data.length; i++) {
//			if(map.containsKey(data[i])) {
//				int value = (int)map.get(data[i]);
//				map.put(data[i], value+1);  // 기존에 존재하는 키면 기존 값을 1증가
//			} else {
//				map.put(data[i], 1);	    // 긱존에 존재하지 않는 키는 값을 1로 저장
//			}
			int value = map.containsKey(data[i]) ? map.get(data[i]) + 1 : 1;
			map.put(data[i], value);
			
		}

		Iterator it = map.entrySet().iterator();	// entrySet은 키와 값 쌍을 가지는 Set

		while(it.hasNext()) {
			Map.Entry entry = (Map.Entry)it.next();	
			int value = (int)entry.getValue();
			System.out.println(entry.getKey() + " : " + value );
		}
	} // main
}

profile
백엔드 개발 정리

0개의 댓글