Collection_ HastSet

Posted 2015. 4. 10. 15:50

package chap11;
import java.util.*;

// Set객체의 중복여부를 확인에 필요한 메서드
// equals() : 결과가 참이면 중복대상
// hashCode() : 결과가 동일하면 중복대상
//
// 두 가지 메서드의 결과가 참이고, 동일하면 해쉬값이 같은경우를
// 중복객체로 본다.

class Person{
 String name;
 int age;
 Person( String name, int age ){
  this.name = name;
  this.age = age;
 }
 
 @Override
 public String toString() {
  return "Person [name=" + name + ", age=" + age + "]";
 }

 @Override
 public int hashCode() {
  /*final int prime = 31;
  int result = 1;
  result = prime * result + age;
  result = prime * result + ((name == null) ? 0 : name.hashCode());
  return result;*/

  return name.hashCode() + age;
 }

 @Override
 public boolean equals(Object obj) {
  /*if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  Person other = (Person) obj;
  if (age != other.age)
   return false;
  if (name == null) {
   if (other.name != null)
    return false;
  } else if (!name.equals(other.name))
   return false;
  return true;*/
  if( obj instanceof Person ){
   Person p = (Person)obj;
   if( name.equals(p.name) && age == p.age )
    return true;
   else return false;
  }
  else return false;
 }
 
}

public class HashSetEx2 {
 public static void main(String[] args) {
  HashSet set = new HashSet();
  set.add( new String("abc") );
  set.add( new String("abc") );
  set.add( new Person("David", 10) );
  set.add( new Person("David", 10) );
  System.out.println(set);
 }
}

 

'Java !!!' 카테고리의 다른 글

Collection _ArrayList  (0) 2015.04.10
Collection _Iterator  (0) 2015.04.10
Collection_ TreeSet  (0) 2015.04.10
Collection_ Set 오름차순 내림차순  (0) 2015.04.10
String_2  (0) 2015.04.07