1-26HashSet简介
Set的特点
Set里面存储的元素不能重复,没有索引,存取顺序不一致。
package com.monkey1024.set;import java.util.HashSet;/*** Set的特点:元素不能重复,没有索引,存取顺序不一致**/
public class HashSetTest01 {public static void main(String[] args) {HashSet<String> hs = new HashSet<>();boolean b1 = hs.add("a");// 当向set集合中存储重复元素的时候返回为falseboolean b2 = hs.add("a");hs.add("b");hs.add("c");hs.add("d");System.out.println(hs);System.out.println(b1);System.out.println(b2);//可以使用增强for循环或者迭代器进行遍历//只要能用迭代器遍历就能使用增强for循环遍历for (String string : hs) {System.out.println(string);}}}
向HashSet中添加自定义的Person对象
package com.monkey1024.bean;/*** Person类**/
public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 重写toString方法@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}//重写equals方法@Overridepublic boolean equals(Object obj) {if(this == obj){return true;}if(obj instanceof Person){Person p = (Person)obj;if(this.name.equals(p.getName()) && this.age == p.getAge()){return true;}}return false;}}
测试类
package com.monkey1024.set;import java.util.HashSet;import com.monkey1024.bean.Person;/*** Set的特点:元素不能重复,没有索引,存取顺序不一致* 向HashSet中添加自定义类**/
public class HashSetTest02 {public static void main(String[] args) {HashSet<Person> hs = new HashSet<>();hs.add(new Person("张三", 20));hs.add(new Person("张三", 20));hs.add(new Person("李四", 22));hs.add(new Person("李四", 22));hs.add(new Person("李四", 22));for (Person p : hs) {System.out.println(p);}}}
通过上面代码可以发现打印结果中并没有去除Person中name和age相同的对象,而且equals方法也没有被调用。重写一下Person中的hashcode方法,让eclipse自动生成:
@Override
public int hashCode() {final int prime = 31;int result = 1;result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;
}
然后再执行测试类时,发现打印的结果中已经去除重复的了。
这里需要注意:在向HashSet中存放自定义类型对象时,一定要重写hashCode和equals方法
转载于:https://www.cnblogs.com/superfly123/p/10483296.html
1-26HashSet简介相关推荐
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
- 通俗易懂的Go协程的引入及GMP模型简介
本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
- 计算机视觉系列最新论文(附简介)
计算机视觉系列最新论文(附简介) 目标检测 1. 综述:深度域适应目标检测标题:Deep Domain Adaptive Object Detection: a Survey作者:Wanyi Li, ...
- 2021年大数据ELK(二十三):Kibana简介
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. Kibana简介 通过上面的这张图就可以看到,Kibana可以用来展示丰富的图表. ...
最新文章
- SCOM警报通知新特性:即时消息通知
- Leetcode 204. 计数质数 解题思路及C++实现
- cornerMinEigenVal函数
- ckeditor源码编辑模式,添加style、javascript内容丢失的解决
- 关于如何升级gcc版本及相关的标准库问题
- SQL Server 2016 RC0 安装(超多图)
- Web 2.0 编程思想:16条法则
- PHP面向对象构造函数,析构函数
- 985毕业,3年大数据经验,面试阿里腾讯失败,只因做不好报表
- SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;
- Neural networks and deep learning C1总结(一)
- 实现1V1音视频实时互动直播系统 十二、第一节 STUN_TURN服务器搭建
- 人工智能之父艾伦·麦席森·图灵
- owasp top10
- 前端封装WebSocket
- 美丽的余霞风景mac高清动态壁纸
- SpringBoot启动报错:Failed to introspect Class [XXX] from ClassLoader解决办法
- 压缩winsxs文件夹的正确姿势
- (转)Let’s make a DQN 系列
- 基于TCAM 的高速路由查找
热门文章
- 远程Linux主机安装Oh My Zsh
- MySQL命令之mysqlhotcopy -- 热备份
- 关于压缩工具 7z(7-zip) 的选项 -u(更新压缩档案中的文件)的解读
- Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小
- 微信小程序注册/登录接口开发
- xxx钻石商城功能开发需求
- java 快速io_Java编程在ICPC快速IO实现源码
- docker初识_初识 docker 搭建自己的开发环境
- 显示请求_学习记录:HTTP的响应与请求amp;Curl
- linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)