1 package com.lv.study.pm.first;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 //无序不可重复
7 public class TestSet {
8
9 public static void main(String[] args) {
10
11 //set TreeSet HashSet
12
13 Set<String>set=new HashSet<String>();
14
15 set.add("jck");//往set集合里面添加一个元素
16 set.add("jcka");
17 set.add("rose");
18 set.add("tom");
19 set.add("jck");//添加重复元素是不会报错的 当做没有看到
20
21 System.out.println(set.size());
22
23 Set<Person>setPer=new HashSet<Person>();
24
25 Person p1=new Person("jack",12);
26 Person p2=new Person("jack",22);
27 Person p3=new Person("rose",12);
28 Person p4=new Person("tom",122);
29
30 ////如果重写自己的equals方法 就按照自己的规则去比较
31 setPer.add(p1);
32 setPer.add(p2);//如果没有重写自己的equals方法 就认为你俩的地址不一样就不是同样的对象
33 setPer.add(p3);
34 setPer.add(p4);
35
36 System.out.println(setPer.size());
37
38 for(Person p:setPer){
39 System.out.println(p);
40 }
41 }
42
43 }
44
45
46 class Person{
47 private String name;
48 private int age;
49
50 //有参构造器
51 public Person(String name, int age) {
52 this.name = name;
53 this.age = age;
54 }
55
56 //无参构造器
57 public Person() {
58 }
59
60
61 //我们的HashSet,在判断重复的元素的时候
62 //1 判断这两个内容的hash值是不是相等个 相等有可能发生了hash碰撞 不相等就不是同一个元素
63 //2 如果发生hash碰撞 就会调用equals方法 来确定这个对象里面的字段是否一致
64
65 @Override
66 public int hashCode() {
67 final int prime = 31;
68 int result = 1;
69 result = prime * result + age;
70 result = prime * result + ((name == null) ? 0 : name.hashCode());
71 return result;
72 }
73
74 @Override
75 public boolean equals(Object obj) {
76 if (this == obj)
77 return true;
78 if (obj == null)
79 return false;
80 if (getClass() != obj.getClass())
81 return false;
82 Person other = (Person) obj;
83 // if (age != other.age)
84 // return false;
85 if (name == null) {
86 if (other.name != null)
87 return false;
88 } else if (!name.equals(other.name))
89 return false;
90 return true;
91 }
92
93 @Override
94 public String toString() {
95 return "Person [name=" + name + ", age=" + age + "]";
96 }
97
98
99
100 }

HashSet的泛型应用的更多相关文章

  1. Java——集合框架之Set&HashSet,HashMap,泛型,compareTo

    Set Set接口--数据存放无序,非常简单,主要呈现信息列表 Set接口存储一组唯一.无序的对象 HashSet是Set接口常用的实现类 Set接口不存在get方法 Iterator接口:表示对集合 ...

  2. C# Collection

    数组与集合不同的适用范围: 数组:数组最适用于创建和使用固定数量的强类型化对象. 集合:集合提供更灵活的方式来使用对象组. 与数组不同,你使用的对象组随着应用程序更改的需要动态地放大和缩小. 对于某些 ...

  3. 【Java集合框架001】为什么重写equals就要重写hashcode?

    一.前言 如果面试官问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法? 遇到这样的问题,应该怎样回答呢?其实,equals和hashCode都 ...

  4. 09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHashSet,TreeSet

    09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHas ...

  5. Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 上一篇总结了下ArrayList .LinkedList和Vector比较,今天泥瓦匠总结下Hash ...

  6. Java泛型底层源码解析-ArrayList,LinkedList,HashSet和HashMap

    声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包 ...

  7. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  8. Effective java笔记(四),泛型

    泛型为集合提供了编译时类型检查. 23.不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛型.List<E>是一个参数化类,表示元素类型为E的列表.为了提供兼容性, ...

  9. luogg_java学习_09_泛型_集合

    这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 泛型 泛型介绍 1).类内部的属性的类型可以由外部决定: 2) ...

  10. Java基础之集合与泛型

    话不多说,直接上图 1.Collection集合小结 注意: 凡是使用哈希表保存对象的容器,保存的对象在容器中都是唯一的,唯一性是通过被保存对象的hashCode和equals方法共同确定: 凡是使用 ...

随机推荐

  1. idea 登录提示Server's certificate is not trusted

    原因:你本地的idea证书不可以 解决方式1: 你去安装一个正版的: 解决方式2: 设置接受不受信任证书即可. AS:File - Settings - Tools - Server Certific ...

  2. MySQL错误码大全

    B.1. 服务器错误代码和消息服务器错误信息来自下述源文件:· 错误消息信息列在share/errmsg.txt文件中."%d"和"%s"分别代表编号和字符串, ...

  3. AspNetCore MVC 跨域

    通过XMLHttpRequest或者ajax去请求一个AspNetCore API接口服务时,Firefox提示我 已拦截跨源请求:同源策略禁止读取位于 http://localhost:33694/ ...

  4. 工具推荐-根据IP地址精确定位经纬度(永久免费)

    今天小张由于业务需求,需要根据用户的访问ip精确定位用户的国家.城市.及经纬度等信息,从网上进行搜索,发现不少的网站,但几乎没有完全符合的,有个别符合的还需要花钱,大家也知道,现在是信息共享的时代,难 ...

  5. FastAPI依赖注入:链式调用与多级参数传递

    title: FastAPI依赖注入:链式调用与多级参数传递 date: 2025/04/05 18:43:12 updated: 2025/04/05 18:43:12 author: cmdrag ...

  6. Scrcpy使用入门

    1.下载Scrcpy GitHub地址:https://github.com/Genymobile/scrcpy 网盘地址:https://pan.baidu.com/s/1NKosSkQJLbmhz ...

  7. PC端网页/web通过自定义协议唤起启动windows桌面应用

    PC端网页/web通过自定义协议唤起启动windows桌面应用 步骤: 写注册表 调用 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\ ...

  8. 关于wireshark抓包工具抓取登录数据的一点心得

    研究这个软件很久了,一直处于门外汉状态,今天终于用它抓到点有用的东西,做个简单的笔记吧,后面再继续完善. 最近研究跨域自动登录时一直不太顺利,今天就仿照网上前辈们的方法,用wireshark先抓一下手 ...

  9. 2025西安交大集训Day11:排列组合,扩展欧几里得,素数筛,欧拉函数,容斥原理逆元,BSGS,莫比乌斯反演,LUCAS定理

    快速幂 快速幂是我们解决中数论问题的基石让我们能以 \(O(logn)\) 的复杂度计算 \(a^n\) 快速幂的思想简单而言就是将 \(n\) 的二进制中所有的 \(1\) 代表的次幂乘起来比如计算 ...

  10. 前端速成之路——html、css

    项目一知识点 单表视图列表 标题标签 <h1>用户注册</h1> 分割线与换行 <hr> <br> 表单提交 get:通过浏览器地址栏传递值 post: ...