`
zhengjiong
  • 浏览: 69114 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

重写equals和hashCode方法,让入HashSet中的内容不重复

    博客分类:
  • Java
阅读更多

 

package com.zj.hashset.test;

import java.util.HashSet;

/**
 * 功能:重写equals和hashCode方法,让相同姓名的用户不能重复加入HashSet
 * @author zhengjiong
 * time:2011-9-14 下午11:52:44
 */
public class HashSet_Test {
	
	public static void main(String[] args) {
		
		People p1 = new People("zhangsan");
		People p2 = new People("zhangsan");
		
		System.out.println(p1.hashCode());
		System.out.println(p2.hashCode());
		
		HashSet set = new HashSet();
		set.add(p1);//HashSet会自动调用hashcode方法,List不会
		set.add(p2);
		
		System.out.println(set);
		
	}
}
class People {
	String name;
	
	public People(String name){
		this.name = name;
	}
	
	@Override
	public int hashCode() {
		return this.name.hashCode();
	}
	
	@Override
	public boolean equals(Object obj) {
		if(this == obj){
			return true;
		}
		if(obj != null)
		{
			if(obj instanceof People){
				return this.name.equals(((People)obj).name) ? true : false;
			}
		}
		return false;
	}
}
分享到:
评论

相关推荐

    重写hashCode()和equals()方法详细介绍

    主要介绍了重写hashCode()和equals()方法详细介绍,涉及重写equals()方法,重写hashCode()方法,重写equals()而不重写hashCode()的风险等相关内容的介绍,具有一定借鉴价值,需要的朋友可以参考下

    equals 和 hashCode两者效果分析详解.docx

    原因是因为,在Java自带的容器HashMap和HashSet中, 都需同时要用到对象的hashCode()和equals()方法来进行判断,然后再插入删除元素,这点我们一会再谈。 那么我们还是单独来看hashCode(),为什么HashMap需要用到...

    HashSet和HashMap的区别_动力节点Java学院整理

    HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有...

    Java面试题.docx

    1、java中==和equals和hashCode的区别 2、int与integer的区别 3、String、StringBuffer、StringBuilder区别 4、什么是内部类?内部类的作用 5、进程和线程的区别 6、final,finally,finalize的区别 7、...

    HashTable和HashMap的区别_动力节点Java学院整理

    HashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有...

    实验05 Java集合.doc

    注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:...

    安卓java读取网页源码-questions:自问自答

    父类的静态方法能否被子类重写 描述下类的加载机制 说说你对 Java 反射的理解 什么是动态代理 在 Java 中 wait、yield 和 seelp 方法的不同 描述下 Java 中的内存分配 什么是多态,实现多态的机制是什么 接口...

    基于javatcpsocket通信的拆包和装包源码-java-interview:java基础知识点

    hashSet如何保证不重复 什么是线程同步 进程 和 线程 Lock 和 Synchronized 的区别 常见的内存溢出 重载和重写的区别 构造器Constructor是否能被override public protected private 自动住装箱和拆箱 Error和...

    javaSE代码实例

    14.2 重写equals与hashCode方法 273 14.2.1 重写equals方法 273 14.2.2 重写hashCode方法 275 14.3 集合框架的层次结构 -277 14.4 Ordered与Sorted的接口 278 14.4.1 Ordered的排序 278 14.4.2 Sorted的...

    疯狂JAVA讲义

    学生提问:hashCode方法对于HashSet的作用是什么? 249 7.3.2 TreeSet类 252 7.3.3 EnumSet类 259 7.4 List接口 261 7.4.1 List接口和ListIterator接口 261 7.4.2 ArrayList和Vector实现类 264 7.4.3 固定长度...

    安卓java读取网页源码-interview:安卓面试

    父类的静态方法能否被子类重写? 静态属性和静态方法是否可以被继承?是否可以被重写?为什么? 什么是内部类?内部类、静态内部类、局部内部类和匿名内部类的区别及作用? == 和 equals() 和 hashCode() 的区别? ...

    Java学习笔记-个人整理的

    {2.2.2}方法重写/覆盖}{50}{subsection.2.2.2} {2.3}修饰符}{51}{section.2.3} {2.4}父类对象的方法调用}{51}{section.2.4} {2.5}封装}{52}{section.2.5} {2.6}多态}{53}{section.2.6} {2.7}Sample code}{54}...

Global site tag (gtag.js) - Google Analytics