java集合框架(hashSet自定义元素是否相同,重写hashCode和equals方法)

简介: /*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不一致,元素不可以重复 * (通过哈希值来判断是否是同一个对象) * ----HashSet:底层数据结构是哈希表, * 保证数据唯一性的方法是调用存入元素的hashCode()方法 * 和equals(Obj...

/*HashSet 基本操作
* --set:元素是无序的,存入和取出顺序不一致,元素不可以重复
* (通过哈希值来判断是否是同一个对象)
* ----HashSet:底层数据结构是哈希表,
* 保证数据唯一性的方法是调用存入元素的hashCode()方法
* 和equals(Object obj)方法
* HashCode值相同,才会调用equals方法
*
* */

 

 1 import java.util.HashSet;
 2 import java.util.Iterator;
 3 public class StudentCode {
 4     
 5     public static void main(String []args){
 6         //定义HashSet,并添加数据
 7         HashSet hs=new HashSet();
 8         hs.add(new Person("lisi",11));
 9         hs.add(new Person("zhangsan",22));
10         hs.add(new Person("lisi",22));
11         hs.add(new Person("lisi",11));
12         //遍历数据(在用迭代器输出数据时,只能用迭代器进行数据操作:增删改查,不可用对象进行操作)
13         for(Iterator it=hs.iterator();it.hasNext();){
14             Person p=(Person)it.next();
15             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
16         }
17     }
18 }
19 class Person{
20     private String name;
21     private int age;
22     Person(String name,int age){
23         this.name=name;
24         this.age=age;
25     }
26     public String getName(){
27         return this.name;
28     }
29     public int getAge(){
30         return this.age;
31     }
32     //重写hashCode()方法,返回一个固定的哈希值
33     public int hashCode(){
34         return 60;
35     }
36     //重写equals(Object obj)方法,定义所需要的变量比较
37     public boolean equals(Object obj){
38         //判断传入的Obj是否是由Person下转型的变量
39         if(!(obj instanceof Person))
40             return false;
41         //对传入对象上转型为Person对象
42         Person p=(Person)obj;
43         //判断两个对象是否名字和年龄相等,相等则认为是同一个对象
44         return this.name.equals(p.getName())&&this.age==p.getAge();
45     }
46 }

 

相关文章
|
2天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
7 0
|
2天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
2天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
3天前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
16 0
|
7天前
|
Java Maven 开发工具
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
《Java 简易速速上手小册》第5章:Java 开发工具和框架(2024 最新版)
28 1
|
11天前
|
Java 大数据 云计算
Spring框架:Java后台开发的核心
【4月更文挑战第15天】Spring框架在Java后台开发中占据核心位置,因其控制反转(IoC)、面向切面编程(AOP)、事务管理等特性提升效率和质量。Spring提供数据访问集成、RESTful Web服务和WebSocket支持。优势包括高效开发、灵活扩展、强大生态圈和广泛应用。应用于企业级应用、微服务架构及云计算大数据场景。掌握Spring对Java开发者至关重要。
|
14天前
|
存储 Java 编译器
Java集合丛林:深入了解集合框架的秘密
Java集合丛林:深入了解集合框架的秘密
16 0
Java集合丛林:深入了解集合框架的秘密
|
1月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
5月前
|
Java
Java集合框架“List“
Java集合框架“List“
47 1