HashSet 中重复值的判断(equal / ==)

今天比较空闲.无聊初次写点东西,有误地方欢迎大家提出,关于HashSet种重复值的判断问题,这种问题常常出现在java笔试当中,我们需要注意。我自己写了个demo测试,请大家看代码.

 

实体测试类

 

package com.lyy.interview;

public class Student {
 private String uphone;
 private String uname;
 
 public String getUphone() {
  return uphone;
 }


 public void setUphone(String uphone) {
  this.uphone = uphone;
 }


 public String getUname() {
  return uname;
 }


 public void setUname(String uname) {
  this.uname = uname;
 }


 @Override
 public boolean equals(Object student) {
  Student s = (Student) student;
  if(this.uphone.equals(s.uphone)){
   return true;
  }
  return false;
 }
 
}

 

 

测试输出类

 

package com.lyy.interview;

import java.util.HashSet;
import java.util.Set;

import junit.framework.TestCase;

public class TestSet extends TestCase {
 
 public void testSetRepeat(){
  Student s1 = new Student();
  s1.setUname("lyy");
  s1.setUphone("123456");
  Student s2 = new Student();
  s2.setUname("lyy");
  s2.setUphone("1234567");
  Student s3 = new Student();
  s3.setUname("lyyaa");
  s3.setUphone("123456");
  Student s4 = s3;
  Set<Student> set = new HashSet<Student>();
  set.add(s1);
  set.add(s2);
  set.add(s3);
  set.add(s4);
  System.out.println(s1.hashCode()== s3.hashCode());
  System.out.println(s1.equals(s3));
  System.out.println(set.size());
 }
}

 

 

输出结果为

               false
               true
               3

 

由此可见HashSet中只有当 obj1==obj2 时才判断为重复值  equals 不能判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值