본문 바로가기

Programming/JAVA

컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[2/2]

JAVA logo image

 

 

 

앞서서 살펴본 예제를 이어서 진행해 보겠습니다. 

 

 

 

컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[1/2]

HashMap은 Map의 인터페이스를 구현하는 대표적인 Map 컬렉션입니다. HashMap에서 키로 사용할 객체는, hashCode( )와 equals( ) 메서드를 오버라이드 하여 동등 객체가 되는 조건을 정해야 합니다. 쉽게 설

nozeroslope.tistory.com

 

 

import java.util.*;

public class ExampleMain {
	public static void main(String[] args) {
		// Map 컬렉션의 생성
		Map<String, Integer> map = new HashMap<String, Integer>();
		
		// 객체 저장(중복 key 사용)
		map.put("SWINGS", 90);
		map.put("DEAN", 50);
		map.put("BLACKNUT", 67);
		map.put("DEAN", 12);
		
		System.out.println("총 Entry 개수: " + map.size());
		
		
		// key로 객체의 value 찾아내기
		System.out.println("\tDEAN : " + map.get("DEAN"));
		System.out.println();
		
		// 객체를 하나씩 처리하기
		Set<String> keySet = map.keySet();
		Iterator<String> keyIterator = keySet.iterator();
		while( keyIterator.hasNext() ) {
			String key = keyIterator.next();
			Integer value = map.get(key);
			System.out.println("\t" + key + " : " + value);
		}
		
		// 객체를 삭제하기
		map.remove("DEAN");
		System.out.println("총 Entry 개수: " + map.size());
		
		// 객체를 하나씩 처리하기
		Set< Map.Entry<String, Integer> > entrySet = map.entrySet();
		Iterator< Map.Entry<String, Integer> > entryIterator = entrySet.iterator();
		
		while(entryIterator.hasNext()) {
			Map.Entry<String, Integer> entry = entryIterator.next();
			String key = entry.getKey();
			Integer value = entry.getValue();
			System.out.println("\t" + key + " : " + value); 
		}
		
		System.out.println();
		
		// 객체 전체 삭제
		map.clear();
		System.out.println("총 Entry 개수: " + map.size());
	}
}

/* 출력
총 Entry 개수: 3
	DEAN : 12

	DEAN : 12
	SWINGS : 90
	BLACKNUT : 67
총 Entry 개수: 2
	SWINGS : 90
	BLACKNUT : 67

총 Entry 개수: 0
*/

 

 

 


 

 

 

사용자 정의 객체를 사용하는 HashMap 예제를 하나만 더 살펴보겠습니다. 즉, 사용자 정의 객체인 Student를 key로 사용하고, 이에 따라 value로는 점수를 저장하는 예제입니다. 특히, 여기서 사용하는 학번과 이름이 동일한 Student 객체는 동등한 키로 간주하기 위해 hasCode( )와 equals( )를 오버라이드 합니다. 

 

public class Student {
	public int sno;
	public String name;
	
	public Student(int sno, String name) {
		this.sno = sno;
		this.name = name;
	}
	
	// 학번과 이름이 같을 경우 true
	public boolean equals(Object obj) {
		if(obj instanceof Student) {
			Student student = (Student) obj;
			return (sno==student.sno) && (name.equals(student.name));
		} else {
			return false;
		}
	}
	
	// 학번과 이름이 같다면 동일한 값을 리턴한다
	public int hashCode() {
		return sno + name.hashCode();
	}
}

 

import java.util.*;

public class ExampleMain {
	public static void main(String[] args) {
		Map<Student, Integer> map = new HashMap<Student, Integer>();
		
		map.put( new Student(1, "SWINGS"), 95);
		map.put( new Student(1, "SWINGS"), 95);
		
		System.out.println("총 Entry 수: " + map.size());
	}
}

/* 출력
총 Entry 수: 1
*/