HashTest以及对象唯一性(三)

package cn.cp;
//当然可以自动生成代码equals()和hashCode()方法,来确保对象的唯一性。
//这样的话存入HashTest的对象就保证了唯一性
import java.util.HashSet;
import java.util.Iterator;
class Boy3 {
	private int age;
	private String name;

	public Boy3(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public String getName() {
		return name;
	}

	@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;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Boy3 other = (Boy3) 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;
	}

	@Override
	public String toString() {
		return "boy3 [age=" + age + ", name=" + name + "]";
	}

}

public class HashSetTest3 {
	public static void main(String[] args) {
        Boy3 boy1=new Boy3(12, "liming");
        Boy3 boy2=new Boy3(13, "liming");
        Boy3 boy3=new Boy3(12, "liming");
        HashSet hashSet=new HashSet();
        hashSet.add(boy1);
        hashSet.add(boy2);
        hashSet.add(boy3);
        Iterator iterator=hashSet.iterator();
        while(iterator.hasNext()){
        	System.out.println(iterator.next());
        }
	}
}
时间: 2024-10-02 06:53:30

HashTest以及对象唯一性(三)的相关文章

HashTest以及对象唯一性(二)

package cn.cp; //在HashSetTest1的基础上重写hashCode()和equals()方法,来确保对象唯一性 import java.util.HashSet; import java.util.Iterator; class Boy2 { private int age; private String name; public Boy2(int age, String name) { super(); this.age = age; this.name = name;

HashTest以及对象唯一性(一)

package cn.cp; //尽管我们在Person类里写了equals方法,但是还是存入了两个name=liming,age=12的对象 //这是为什么呢???????? //因为HashSet在往里面存对象的时候,它存的是Hash值. //虽然建立的两个name=liming,age=12但是他们的hash值不一样,所以当做了不同的对象. //注意: //(1)Java里一个hash值下可能有多个对象. //(2)在HashSet中在比较是否是同一个对象时,先比较的hash值,若hash

【SSH系列】-- Hibernate持久化对象的三种状态

       在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回.在hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态.       一.瞬态(Transient),也叫临时态.处于这种状态的对象具备的特征如下:       a.

【HIBERNATE框架开发之五】HIBERNATE对象的三种状态&&SESSION的常用方法

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/814.html  1. Hibernate对象的三种状态:(图解如下:)   如图所示,Hibernate对象有三种状态,1.Transient  2.Persistent 3.Detached; 三种状态的区别如下: 1. 当对象处于Transient时,只在内存中有一个对象,没ID,而且在缓存和数据库中没有: 2.

Java反射之类的实例对象的三种表示方式总结_java

如下所示: <span style="font-size:14px;">package com.imooc.reflect; public class ClassDemo1 { public static void main(String[] args) { //Foo的实例对象如何表示 Foo foo1 = new Foo();//foo1就表示出来了 //Foo这个类,也是一个实例对象,Class类的实例对象,如何表示呢. //任何一个类都是Class的实例对象,这个实

关于hibernate中对象的三种状态分析

一.首先Hibernate中对象的状态有三种:瞬态.游离态和持久态,三种状态转化的方法都是通过session来调用,瞬态到持久态的方法有save().saveOrUpdate().get().load():持久态到瞬态的方法有delete():游离态到持久态的方法有update().saveOrUpdate().lock():持久态到游离态的方法有:session.close().session.evict().session.clear(). 二.Hibernate的状态 hibernate的

【hibernate框架】对象的三种状态Transient-Persistent-Detached

三种状态分别是 Transient(游离状态),Persistent(持久化状态),Detached(脱管状态). Teacher t=new Teacher(); t.setName("t12");//游离状态 t.setTitle("中级");//游离状态 t.setBrithday(new Date());//游离状态 t.setZhicheng(ZhiCheng.A);//游离状态 SessionFactory sessionFactory=new Conf

hibernate持久化对象的三个状态

              Hibernate中的对象有3种状态,瞬时对象(TransientObjects).持久化对象(PersistentObjects)和离线对象(DetachedObjects也叫做脱管对象).这三个状态的主要区别在两方面:1.session;2.数据库                          下面说一下不同状态的特征:            1.Transient (瞬态)              a) 不在Session的缓存中,不与任何的Session

克隆javascript对象的三个方法小结_javascript技巧

方法一 复制代码 代码如下: function clone(obj){ var o; switch(typeof obj){ case 'undefined': break; case 'string' : o = obj + '';break; case 'number' : o = obj - 0;break; case 'boolean' : o = obj;break; case 'object' : if(obj === null){ o = null; }else{ if(obj i