day20_HashMapEx12

육희영·2021년 11월 1일
0
package com.java1.day20;

import java.util.*;

public class HashMapEx12 {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("김자바", new Integer(90));
		map.put("김자바", new Integer(100));	//위에 있던 김자바 90점이 100점으로 덮어쓰여졌다
		map.put("이자바", new Integer(100));
		map.put("강자바", new Integer(80));
		map.put("안자바", new Integer(90));
		
		//Set entrySet() : HashMap에 저장된 키와 값을 엔트리(키와 값의 결합)의 형태로 Set에 저장해서 반환
		Set set = map.entrySet();
		Iterator it= set.iterator();//Iterator()를 쓸려고 하니 Map에는없어서 Set으로 형변환 해서 사용한다.
		
		while(it.hasNext()) {
			Map.Entry e = (Map.Entry)it.next();	//Map.Entry는 인터페이스 이다.
			System.out.println("이름 : " + e.getKey() + ", 점수 : " + e.getValue());
		}
		
		set = map.keySet();//HashMap에 저장된 모든키가 저장된 Set을 반환
		System.out.println("참가자 명단 : " + set);
		
		Collection values = map.values();//Iterator()를 쓸려고 하니 Map에는없어서 Collection으로 형변환 해서 사용한다.
		it = values.iterator();	//Iterator는 재사용이 안되므로 다시 호출 해야한다.
		
		int total = 0;
		
		while(it.hasNext()) {
			Integer i = (Integer)it.next();
			total += i.intValue();	//Integer를 int로 ..
		}
		
		System.out.println("총점 : " + total);
		System.out.println("평균 : " + (float)total/set.size());
		System.out.println("최고점수 : " + Collections.max(values));
		System.out.println("최저점수 : " + Collections.min(values));
	}
}
	/* 결과를 보면 "김자바" 이름이 두명이다. 또한 이름을 key로 받고 있다.
	 * key 중복으로 인해 첫번째 "김자바"의 값 90 이 그 후에 새로 들어온 "김자바", 100 에 의해
	 * 덮어 쓰여지면서 100만 저장되었다. 그래서 실제로 5명이 아닌 4명이 저장되었다. 
	 * 이해가 안간다면 HashMapEx11을 다시 보자.
	 */

출력결과

이름 : 안자바, 점수 : 90
이름 : 김자바, 점수 : 100
이름 : 강자바, 점수 : 80
이름 : 이자바, 점수 : 100
참가자 명단 : [안자바, 김자바, 강자바, 이자바]
총점 : 370
평균 : 92.5
최고점수 : 100
최저점수 : 80

0개의 댓글

관련 채용 정보