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. 解决Mac无法共享网络问题

    前言 部分小伙伴在使用 Mac 共享网络会出现各种问题: 无法共享 共享后,手机无法连接网络 解决办法 重置网络即可. 三个步骤轻松解决 访达(Finder)前往文件夹:/Library/Prefer ...

  2. laravel The Process class relies on proc_open, which is not available on your PHP installation.

    解决办法: 在php.ini中,找到disable_functions选项,看看后面是否有proc_open函数被禁用了,去掉proc_get_status,proc_open即可

  3. 表访问方法:PostgreSQL 中数据更新的处理方式

    作者:Cary 前言 本文将详细探讨 PostgreSQL 如何处理更新操作.在 PostgreSQL 中,成功的更新可以被视为"插入一条新记录",同时"标记旧记录为不可 ...

  4. 探秘Transformer系列之(18)--- FlashAttention

    探秘Transformer系列之(18)--- FlashAttention 目录 0x00 概述 0.1 问题 0.2 其它解决方案 0.3 Flash Attention 0x01 背景知识 1. ...

  5. 【Linux】5.11 shell文件包含

    Shell 文件包含 ?和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号 ...

  6. FastAPI中的Pydantic密码验证机制与实现

    title: FastAPI中的Pydantic密码验证机制与实现 date: 2025/03/31 00:04:51 updated: 2025/03/31 00:04:51 author: cmd ...

  7. 端口telnet不通排查过程

    现状 简单描述下最近在做啥,我手里维护的一些系统的线上服务器,还在使用centos7,7.3/7.6/7.9都有,运维侧选定的替换系统是openEuler20.03-LTS-SP1.按理说,运维直接在 ...

  8. iOS自动化测试环境搭建总结

    1.关于iOS真机和模拟器自动化环境搭建 参考博文: Appium+Python3+iOS真机环境搭建 iOS自动化测试:mac下iOS10 appium测试环境的搭建 IOS + Appium自动化 ...

  9. Python科学计算系列6—积分

    1.定积分 例1:求下列函数的定积分 代码如下: from sympy import * x = symbols('x') f = integrate(exp(-x), (x, 0, oo)) pri ...

  10. 搜索算法1——聊聊dfs与回溯

    搜索算法1--聊聊dfs与回溯 目录 1.dfs 的概念 $\ \ \ $1.1 dfs 的概念 2.dfs 的做法 $\ \ \ $2.1 为什么要用 dfs $\ \ \ $2.2 dfs 如何实 ...