HashSet的泛型应用
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的泛型应用的更多相关文章
- Java——集合框架之Set&HashSet,HashMap,泛型,compareTo
Set Set接口--数据存放无序,非常简单,主要呈现信息列表 Set接口存储一组唯一.无序的对象 HashSet是Set接口常用的实现类 Set接口不存在get方法 Iterator接口:表示对集合 ...
- C# Collection
数组与集合不同的适用范围: 数组:数组最适用于创建和使用固定数量的强类型化对象. 集合:集合提供更灵活的方式来使用对象组. 与数组不同,你使用的对象组随着应用程序更改的需要动态地放大和缩小. 对于某些 ...
- 【Java集合框架001】为什么重写equals就要重写hashcode?
一.前言 如果面试官问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法? 遇到这样的问题,应该怎样回答呢?其实,equals和hashCode都 ...
- 09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHashSet,TreeSet
09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHas ...
- Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 上一篇总结了下ArrayList .LinkedList和Vector比较,今天泥瓦匠总结下Hash ...
- Java泛型底层源码解析-ArrayList,LinkedList,HashSet和HashMap
声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Effective java笔记(四),泛型
泛型为集合提供了编译时类型检查. 23.不要在代码中使用原生态类型 声明中具有一个或多个类型参数的类或接口统称为泛型.List<E>是一个参数化类,表示元素类型为E的列表.为了提供兼容性, ...
- luogg_java学习_09_泛型_集合
这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 泛型 泛型介绍 1).类内部的属性的类型可以由外部决定: 2) ...
- Java基础之集合与泛型
话不多说,直接上图 1.Collection集合小结 注意: 凡是使用哈希表保存对象的容器,保存的对象在容器中都是唯一的,唯一性是通过被保存对象的hashCode和equals方法共同确定: 凡是使用 ...
随机推荐
- Golang入门:Linux上的go语言安装与配置
Tips:本文以本文撰写时的 Go 语言最新版本,也就是 go.1.19.2 版本为例. Linux 发行版本使用 Ubuntu 22.04.1 LTS 为例来做演示. 安装 C 工具 Go 的工具链 ...
- Go是怎么解决包依赖管理问题的?
我们先来了解一下 Go 构建模式的演化过程,弄清楚 Go 核心开发团队为什么要引入 Go module 构建模式. Go 构建模式时怎么演化的? Go 程序由 Go 包组合而成的,Go 程序的构建过程 ...
- VMware虚拟化的CPU调度原理及实践建议
简介: ESXi的CPU调度原理及实践建议 ESXi的CPU调度原理 CPU调度器的设计目标 公平性:确保虚机按照各自配置的份额占用物理CPU.吞吐量:最大化物理CPU的使用率.响应性:vCPU从'就 ...
- ZeroTier简单使用
在 CentOS 系统下,你可以使用以下命令行操作来管理 ZeroTier 网络和设备.首先,确保已经正确安装 ZeroTier 软件,你可以按照以下步骤进行安装: 安装 ZeroTier: Zero ...
- 【SpringMVC】使用 @RequestMapping 映射请求
使用 @RequestMapping 映射请求 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求 在控制器的类定义及方法定义处都可标注 @Requ ...
- 举个栗子之gorpc - 消息的编码和解码
2022年的第一个rpc,比以往来的更早一些... 留杭过年...写点东西 初始化项目gorpc 借助go module我们可以轻易创建一个新的项目 mkdir gorpc go mod init g ...
- Global.asax
转
备忘: 项目中的Global.asax文件里通常包含这5个方法: Application_Start – web 应用程序最初启动时执行 Application_End – 应用程序关闭时运行 App ...
- Win10微软拼音输入法设置-注册表
修改候选项窗口 HKEY_CURRENT_USER\Software\Microsoft\InputMethod\CandidateWindow\CHS\1 EnableFixedCandidateC ...
- mybatis的mapper接口动态代理开发
一.必须遵守的四项原则 1:接口 方法名==xx.xml中的id名 2:方法返回值类型与Mapper.xml文件中返回值类型一致 3:方法的入参类型与Mapper.xml文件中入参值类型一致 4:命名 ...
- AoP的相关术语
一.Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在 spring 中,这些所谓的点指就是方法,因为 spring 只支持方法类型的连接点. 二.Pointcut(切入点): 所谓切 ...