寒假在家,看书解闷。以下代码来自于疯狂Java讲义[size=large][color=green]import java.util.*;
//类A的equals方法总是返回true,但没有重写其hashCode()方法
class A
{
public boolean equals(Object obj)
{
return true;
}
}
//类B的hashCode()方法总是返回1,但没有重写其equals()方法
class B
{
public int hashCode()
{
return 1;
}
}
//类C的hashCode()方法总是返回2,但没有重写其equals()方法
class C
{
public int hashCode()
{
return 2;
}
public boolean equals(Object obj)
{
return true;
}
}
public class TestHashSet
{
public static void main(String[] args)
{
HashSet books = new HashSet();
//分别向books集合中添加2个A对象,2个B对象,2个C对象
books.add(new A());
books.add(new A());
books.add(new B());
books.add(new B());
books.add(new C());
books.add(new C());
System.out.println(books);
}
}
//输出结果:[lee.B@1, lee.B@1, lee.C@2, lee.A@1fb8ee3, lee.A@c17164]
// PS :程序说明了两个HashSet集合判断元素相等的标准是hashcode和equals方法缺一不可[/color][/size]
[size=x-large][color=green]下面的程序从方面进行了验证
import java.util.*;
class R{
int count;
public R(int count){
this.count = count;
}
public String toString(){
return "R(count属性:" + count + ")";
}
public boolean equals(Object obj){
if (obj instanceof R){
R r = (R)obj;
if (r.count == this.count){
return true;
}
}
return false;
}
public int hashCode(){
return this.count;
}
}
public class TestHashSet2{
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add(new R(5));
hs.add(new R(-3));
hs.add(new R(9));
hs.add(new R(-2));
System.out.println(hs); //打印集合
//输出结果:[R(count属性:5), R(count属性:9), R(count属性:-3), R(count属性:-2)]
Iterator it = hs.iterator(); //获取集合的迭代器
R first = (R)it.next(); //取出第一个元素
first.count = -3; //为第一个元素的count属性赋值
//PS :注意这里仅仅是修改了count的属性值,并没有改了原有R对象的hascode
System.out.println(hs);//打印结合
//输出结果:[R(count属性:-3), R(count属性:9), R(count属性:-3), R(count属性:-2)]
hs.remove(new R(-3));//删除count为-3的R对象
System.out.println(hs);//打印结果
//输出结果:[R(count属性:-3), R(count属性:9), R(count属性:-2)]
System.out.println("hs是否包含count为-3的R对象?" + hs.contains(new R(-3)));
//输出false
//PS :因为此时的count=-3对应R对象的hascode是原来count=5的R对象对应的
System.out.println("hs是否包含count为5的R对象?" + hs.contains(new R(5)));
//输出false
//PS: 比较时不仅要比较hascode的值还要比较equals的结果
}
}
分享到:
相关推荐
掌握List集合、Set集合、Map集合的使用以及Iterator迭代器和foreach循环的使用 了解常用的集合类 熟悉泛型的使用
通过实例学习Java集合框架HashSet HashSet是Java集合框架中的一种重要数据结构,用于存储不重复的元素。通过实例学习Java集合框架HashSet,可以帮助开发者更好地理解和使用HashSet,提高编程效率和代码质量。本文将...
"深入Java集合学习系列:HashSet的实现原理 - 莫等闲 - ITeye技术网站.mht"会讲解HashSet如何避免元素重复以及它的性能特点。 最后,LinkedHashSet结合了HashSet的特性与LinkedHashMap的顺序特性,它维护了元素的...
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了基于哈希表的无序、不重复元素的集合。具体来说,它是通过哈希表(实际上是一个 HashMap 实例)来存储元素的。 以下是 HashSet 的一些主要特点: 无序...
Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...
这个“一个讲解很清晰的Java集合框架PPT”显然是一个对外公开的教育资源,旨在帮助学习者深入理解Java集合的概念、结构以及实际应用。 在Java中,集合框架主要包括四大接口:List、Set、Queue和Map。每个接口都有...
首先,Java集合框架由一系列接口和实现这些接口的类组成。主要的接口有`List`、`Set`和`Queue`,它们各自代表了不同特性的数据结构。`List`接口定义了一个有序的、允许重复元素的集合,如`ArrayList`和`LinkedList`...
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
通过学习和实践这些代码,新手可以更好地理解和掌握Java集合框架的用法,并将其应用于实际的项目开发中。同时,这也适合作为数据结构课程设计的基础,因为集合运算正是数据结构中的基本操作。对于想要深入研究Java...
Java集合框架包括接口(如List、Set、Queue)和实现类(如ArrayList、LinkedList、HashSet、HashMap等)。理解各种集合的区别,以及它们的实现方式和应用场景,是提升编程效率的关键。例如,List接口中的ArrayList和...
Java集合框架是一个包含多种数据结构(如列表、集、队列等)的API,这些数据结构由接口(如`Collection`、`List`、`Set`和`Queue`)和实现这些接口的类(如`ArrayList`、`HashSet`和`LinkedList`)组成。`Collection...
在这个“java集合学习代码”中,我们可能涵盖了一系列关于Java集合框架的核心概念和实践应用。 首先,Java集合框架包括接口和实现类。主要的接口有List、Set和Queue,它们都继承自Collection接口。List接口代表有序...
Collection是Java集合框架中最重要的接口之一,它是所有单列集合的根接口。 ##### 1.2 Collection - **常用方法**: - `add(E e)`:向集合添加一个元素。 - `remove(Object o)`:从集合中移除指定元素。 - `...
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的接口和类。在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java...
Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...
Java集合框架是Java语言中一个非常重要的组件,提供了多种数据结构和算法来存储和操作数据。在Java集合框架中,LinkedList、ArrayList、HashMap、TreeMap等都是非常常用的数据结构。本文将对Java集合框架的源码进行...
在学习和实践这些Java集合练习代码时,你不仅会掌握基本的集合操作,还会了解不同集合类型的选择依据,以及在实际场景中如何根据需求选择合适的集合。通过不断实践,你将能够熟练地运用Java集合框架解决各种数据处理...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了数据结构和算法的实现,使得在处理各种数据存储和操作时更加高效。本资源聚焦于Java集合中的四个关键类:HashSet、TreeSet、HashMap和TreeMap,它们...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高级的数据结构,使得开发者能够更方便地管理和操作对象。在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见...