2013년 12월 4일 수요일

[자바해시맵, 해시코드]JAVA HashMap에서 hashCode 사용예제

[자바해시맵, 해시코드]JAVA HashMap에서 hashCode 사용예제


package onj;

import java.util.HashMap;

class Person {
String name;
Person(String name) {
this.name = name;
}
}

//Person2 클래스는 해시코드를 키로해서 HashMap에서 검색을 위해
//hashCode와 equals를 재정의했다.
class Person2 {
String name;
Person2(String name) {
this.name = name;
}
public int hashCode()//hashCode 오버라이딩 
{
 return name.hashCode();
}
//equals() 는 객체안의 값 비교를 위한 메소드인데 hashCode() 얻기위해 내부적으로 사용 
    public boolean equals(Object obj) {  
 Person2 p2 = (Person2)obj;
 
 if(name.equals(p2.name)) return true;
 else
  return false;
}
}

public class Test {
public static void main(String[] args) {
Person p1 = new Person("오엔제이"); 
Person p2 = new Person("오라클자바커뮤니티");
HashMap<Person, String> map1 = new HashMap<Person, String>();
map1.put(p1, "실무교육");
map1.put(p2, "개발자커뮤니티");
//출력결과 null이 나옴, 값을 못가져옴,Key로 사용되는 Person 클래스에 
//hashCode()메소드가 오버라이딩 안되있어서
String what1 = map1.get(new Person("오엔제이"));
System.out.println("map1.get(오엔제이)-->" + what1 );
Person2 p3 = new Person2("오엔제이");
Person2 p4 = new Person2("오라클자바커뮤니티");
HashMap<Person2, String> map2 = new HashMap<Person2, String>();
map2.put(p3, "실무교육");
map2.put(p4, "개발자커뮤니티");
//출력결과 이름이 "오엔제이"인 것을 map2에서 찾아옴
String what2 = map2.get(new Person2("오엔제이"));
System.out.println("map2.get(오엔제이)-->" + what2 );
}
}

댓글 없음:

댓글 쓰기