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

/*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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏尾尾部落

[剑指offer] 和为S的两个数字

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

1372
来自专栏闻道于事

Java之集合初探(一)

一、集合概述、区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器。 为什么出现集合类? 面向对象语言对事物的体现都...

2527
来自专栏深度学习与计算机视觉

算法-数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现的次数就是3。 解题思路: 1.首先,遍历数组肯...

2095
来自专栏Jack-Cui

541.Reverse String II(String-Easy)

Given a string and an integer k, you need to reverse the first k characters for ...

18410
来自专栏mwangblog

链表第一课

链表由节点(Node)组成,一个节点包含两个变量,一个变量存储我们需要保存的数据,另一个变量指向下一个节点,如下图所示:

1013
来自专栏Phoenix的Android之旅

Java面试的基础中的基础

面试时经常从Java的基础知识开始,最基础的部分莫过于Java的集合类型。我们知道Java的集合类型有三种,Set,List,Map,那这三种有什么区别呢。

981
来自专栏文武兼修ing——机器学习与IC设计

抽象数据结构与表抽象数据结构表

抽象数据结构 抽象数据结构(ADT)是一些操作的集合,集合了一些必要且重用性高的操作,这些操作在一个项目中只被编写一次。抽象数据结构只定义操作的存在,并不定义操...

2916
来自专栏郭耀华‘s Blog

剑指offer第五天

28.数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2...

2745
来自专栏Bingo的深度学习杂货店

Q7 Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 1...

2954
来自专栏编程

Python基础1

数据类型 Python3中有6钟标准的数据类型:Number(数字)、String(字符 串)、List(列表)、Tuple(元组)、Sets(集合)、Dict...

22210

扫码关注云+社区

领取腾讯云代金券