前几天在一个前辈的博客中看到Set集合的hashcode与equals解析.
hashcode产生一个哈希码,相当于数组的下标,通过下标查找到值.
Set添加元素的时候,首先调用hashcode定位元素位置,如果该位置上有元素,就调用equals方法比较俩个元素的值是否相等,如果相等则返回,不相等则添加到该位置上.
测试程序:
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
Student s1=new Student();
s1.setName("s1");
Student s2=new Student();
s2.setName("s2");
Student s3=new Student();
s3.setName("s3");
Set studentSet=new HashSet();
studentSet.add(s1);
System.out.println("========s1=======");
studentSet.add(s2);
System.out.println("========s2=======");
studentSet.add(s3);
System.out.println("========s3=======");
System.out.println(studentSet.contains(s3));
}
}
测试类:
import java.util.*;
public class Student implements Comparable<Student>
{
private String name;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public int compareTo(Student s)
{
return 0;
}
public int hashCode()
{
System.out.println("=========hashcode========");
return 5;
}
public boolean equals(Object obj)
{
System.out.println("===========equals=============");
Student s=(Student)obj;
return s.name.equals(this.name);
}
}
分享到:
相关推荐
在`MySetClass.java`源代码中,可能包含了创建和操作Set对象的示例,例如添加元素、删除元素、判断元素是否存在以及遍历Set等。`Java.jpg`可能是对Java集合框架或Set接口的可视化表示,帮助理解其内部结构或工作原理...
### 对Java中Set的深入研究 #### 一、引言 在Java编程语言中,`Set`接口是一种非常重要的集合类型,它代表了一个无序且不允许包含重复元素的集合。`Set`接口属于Java集合框架的一部分,继承自`Collection`接口,并...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和管理对象的统一方式。这个框架包括了一系列接口、抽象类以及实现类,帮助程序员处理各种数据结构,如列表、集合、映射等。 首先,我们...
在Java中,容器的设计考虑到了添加、删除和查找对象的效率与便利性。 - **添加新对象**:可以将对象添加到容器的末尾、开头或中间。 - **删除对象**:删除操作可能会导致容器中的其他对象位置发生变化。 - **查找...
总之,编译原理中的LR0语法分析是编译器设计的重要组成部分,通过Java实现能够帮助开发者理解语言解析的内部机制。在实际应用中,LR0分析常被作为更复杂的LR(k)或LALR(1)分析的基础,以处理更复杂的语法结构。学习和...
Java集合类是Java编程中非常重要的组成部分,它们提供了一种组织和管理数据的方式。Java集合框架主要由两个...综上所述,Java集合类及其原理是面试中常见的知识点,理解并掌握它们有助于提升编程能力,解决实际问题。
Java集合体系是Java编程中非常核心的部分,涵盖了用于存储和操作数据的各种数据结构。在Java中,集合主要分为三大接口:List、...在面试中,深入理解集合的底层原理和操作性能,能展现出扎实的Java基础和问题解决能力。
Java中的Set集合是一种特殊的集合类型,它遵循了不存储重复元素的基本原则。Set接口是Collection接口的子接口,它的设计目标是确保集合中每个元素的唯一性。在Java中,Set接口有两个常用的实现类:HashSet和TreeSet...
Java开发中的Memcached原理及实现 Memcached是一种高性能、分布式内存对象缓存系统,它能够存储数据并提供快速访问,从而提高应用的响应速度。在Java开发中,使用Memcached可以有效缓解数据库的压力,提高应用的...
"Java集合Collection、List、Set、Map使用详解" Java集合是Java编程语言中最基本也是最重要的一部分。能够正确地使用集合类和理解集合的实现原理对于Java程序的开发具有无比的好处。本文将详细解释Java集合的实现...
在Java项目中,添加Memcached Java客户端库(如spymemcached或xmemcached)作为依赖。 2. **连接与操作**: 客户端库提供了连接到Memcache服务器的方法,如创建MemcachedClient实例。通过这个实例,你可以执行增删...
在Java中,最常见的对象容器包括ArrayList、List、Set和HashMap等。这些容器各自具有不同的特性和用途,理解并熟练掌握它们对于提升Java编程能力至关重要。 ArrayList是Java集合框架中的一个动态数组,它允许我们在...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`List`、`Set`和`Map`是三大核心接口。...通过阅读“Java list set map.PDF”这份资料,开发者可以深入学习这些集合类的原理和使用技巧,提高编程效率。
总结来说,基于Java的SNMP报文通讯实现需要对SNMP协议的基本原理有深入的理解,掌握MIB的使用和网络编程技术,熟悉安全机制,并利用Java提供的类库和API来构建可靠的网络管理应用。通过上述步骤,开发者可以利用Java...
9. **枚举**:Java 5中添加的枚举类型提供了一种更安全的方式定义常量,避免了传统常量类的一些问题。 10. **注解(Annotation)**:从Java 5开始引入,注解提供了一种元数据,可以用来标记代码,供编译器或运行时...
本文将详细解释Java集合框架的实现原理、Collection、List、Set、Map四大类的使用方法和原理。 1. 集合框架概述 Java集合框架是一个容器,用于存储和操作对象的集合。这个框架提供了多种类型的容器,每种容器都有...
### Java 计算同一 List 中是否有相同值 在 Java 编程中,判断一个 `List` 中是否存在重复元素是一项常见的需求。特别是在数据处理、验证或分析等场景中,确保数据的唯一性对于维持数据完整性至关重要。 #### 核心...
下面将详细解释 Java 中的集合是如何实现的,以及他们的实现原理。 一、集合框架概述 Java 集合框架是 Java 语言中的一种机制,用于存储和操作集合对象。它提供了一些基本的接口和类,用于实现集合的操作。 Java ...
这些代码可以帮助你深入理解Java集合的工作原理,并在实践中避免类型转换错误。 10. **详细指导教程** 详细指导教程可能涵盖了集合的创建、遍历、添加、删除、查找等基本操作,以及如何在实际项目中有效地使用Java...
4. **执行压缩**:最后,通过调用`addFileset`方法将`FileSet`添加到`Zip`任务中,并通过`execute`方法启动压缩过程。 #### 结论 通过使用Apache Ant的`Zip`任务,Java开发者能够轻松地实现文件夹的压缩功能,这...