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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题

C 用异常使得可以将正常执行代码和出错处理区别开来。 比如一个栈&#xff0c;其为空时&#xff0c;调用其一个pop 函数&#xff0c;接下来怎么办&#xff1f; 栈本身并不知道该如何处理&#xff0c;需要通知给其调用者&#xff08;caller&#xff09;&#xff0c;因为只有调用…

适用于Java开发人员的Groovy吗? 认识Gradle,Grails和Spock

Java开发人员最感兴趣的Groovy用例有哪些&#xff1f; 尽管已经存在了一段时间&#xff0c;但是似乎只有Groovy最近才开始使用Groove。 对于某些人来说&#xff0c;它基本上只是另一种深奥的JVM语言&#xff0c;但是由于一些流行的工具可以帮助您使用Java&#xff0c;因此它比…

批量获取服务器cpu信息,获取服务器的cpu利用率

你得到的错误是什么&#xff1f;这就是我正在使用同样的东西(剥离了一下)。它显示每物理处理器的负载。strComputer "."Dim arrProcessors : ReDim arrProcessors(2,0)Set objWMIService GetObject("winmgmts:" _& "{impersonationLevelimperso…

CEPH FILESYSTEM

参考文档&#xff1a; CEPH FILESYSTEM&#xff1a;http://docs.ceph.com/docs/master/cephfs/ CephFS best practices&#xff1a;http://docs.ceph.com/docs/master/cephfs/best-practices/ MDS STAT&#xff1a;http://docs.ceph.com/docs/master/cephfs/mds-states/ Mount …

条款11 在operator=中处理“自我赋值”

“自我赋值”发生在对象被赋值给自己时&#xff1a; 1 classWidget {...}; 2 Widget w; 3 ... 4 w w; //赋值给自己这看起来有点愚蠢&#xff0c;但它合法&#xff0c;所以不要认定客户绝不会那么做。此外赋值动作并不总是那么可被一眼辨认出来&#xff0c;例如&#xff1a; a[…

定时器实现方式之TimerTask、Timer

在未来某个指定的时间点或者经过一段时间延迟后执行某个事件&#xff0c;这时候就需要用到定时器了。定时器的实现方式有很多种&#xff0c;今天总结最简单的实现方式。java 1.3引入了定时器框架&#xff0c;用于在定时器上下文中控制线程的执行&#xff0c;其由类Timer和Timer…

jaxb 处理_休息使用Jersey –包含JAXB,异常处理和客户端程序的完整教程

jaxb 处理最近&#xff0c;我开始使用Jersey API开发一个Restful Web服务项目。 在线提供了一些教程&#xff0c;但是我遇到了异常处理方面的一些问题&#xff0c;而且在使用JaxB并提供异常处理方法的完整项目中找不到任何地方。 因此&#xff0c;一旦我能够使用带有异常处理和…

并查集(UnionFindSet)

小米的校招题&#xff1a;朋友圈&#xff08;25分&#xff09;假如已知有n个人和m对好友关系&#xff08;存于数字r&#xff09;。如果两个人是直接或间接的好友&#xff08;好友的好友的好友...&#xff09;&#xff0c;则认为他们属于同一个朋友圈&#xff0c;请写程序求出这…

Spring Boot配置文件放在jar外部

https://www.cnblogs.com/xiaoqi/p/6955288.html 在当前目录创建文件夹config,把配置文件放到config目录&#xff0c;然后启动 java -jar export.jar --spring.config.locationconfig/config.properties转载于:https://www.cnblogs.com/Andrew520/p/10491927.html

Apache Camel Intellij IDEA插件的工作已开始

仅仅因为圣诞节并不意味着骆驼停滞不前。 在23日晚上&#xff0c;我花了一些时间进行研究&#xff0c;并开始研究IDEA的Apache Camel插件的小原型。 它已经存在了很长时间。 原因是Apache Camel为目录提供了有关工具的大量有用信息。 该目录包含有关每个Camel组件&#xff0c…

Python函数参数传递:传值还是传引用

引子 首先来看一个列子&#xff1a; def change(val):val.append(100)val [T, Z, Y] nums [0, 1] change(nums) print(nums)123456123456 猜猜结果应该是什么&#xff1f; 如果Python函数参数的传递是传值的话&#xff0c;结果应该是[0, 1]&#xff0c;如果是传引用的话&am…

activitemq与spring的整合

activitemq整合spring 一.activmq的点对点模型 pom.xml: <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoca…

Python遍历字典的四种方法对比

#!/usr/bin/python from time import clockl [(x,x) for x in xrange (10000000)] d dict(l) t0 clock() # 方法一 for i in d: n d[i]t1 clock() # 方法二&#xff1a;最慢 for k,v in d.items(): n vt2 clock() # 方法三: 最快&#xff0c;推荐方法 for k,v in d.ite…

jboss启动初始页面_JBoss BRMS最佳实践– BPM流程初始化层的提示

jboss启动初始页面我过去发布过一些有关迁移策略的文章&#xff0c;仔细研究了流程层&#xff0c;并提供了一些有关jBPM的最佳实践 &#xff0c;它们都涉及到BPM策略的非常具体的部分。 我想重新讨论最佳实践的主题&#xff0c;然后在智能集成企业级别上&#xff0c;我们讨论使…

Python 学习笔记 多进程 multiprocessing

Python 解释器有一个全局解释器锁(PIL)&#xff0c;导致每个 Python 进程中最多同时运行一个线程&#xff0c;因此 Python 多线程程序并不能改善程序性能&#xff0c;不能发挥多核系统的优势&#xff0c;可以通过这篇文章了解。 但是多进程程序不受此影响&#xff0c; Python 2…

Django 学习笔记第一课

Django web 框架介绍&#xff1a; MVC框架的核心思想 核心思想&#xff1a;解耦&#xff1b; 好处&#xff1a;可扩展性&#xff0c;向后兼容&#xff0c;低耦合&#xff0c;高内聚&#xff1b; 普通web结构框架MVC框架 M:model 主要用于数据库层次的封装&#xff1b; V:view…

记住要重置线程上下文类加载器

我很难思考与Java 加载有关的东西&#xff0c;而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此&#xff0c;在这些应用程序服务器或OSGi中&#xff0c;经常使用多个类加载器&#xff0c;并且透明地使用类加载器的能力降低了。 我同意OSGI Alliance B…

EntityFramework Code-First—领域类配置之DataAnnotations

本文出自&#xff1a;https://www.cnblogs.com/tang-tang/p/5510574.html 一、摘要 EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合&#xff0c;DataAnnotation特性会覆盖默认的EF约定。 DataAnnotation存在于两个命名空间里&#xff1a; System.Co…

Python 调试工具 PDB(Linux 环境下调试)

转载&#xff1a;http://blog.163.com/gjx0619126/blog/static/12740839320114995947700/ 在python中使用pdb模块可以进行调试 import pdb pdb.set_trace() 也可以使用python -m pdb mysqcript.py这样的方式 (Pdb) 会自动停在第一行&#xff0c;等待调试,这时你可以看看 帮助…

Ubuntu 更新源方法

安装完Ubuntu系统之后&#xff0c;面临的最主要的一个问题就是将apt安装源进行更新&#xff0c;因为在国内直接利用Ubuntu默认的安装源下载安装包速度慢&#xff0c;并且有的时候软件版本也比较旧。今天小编对Ubuntu更新源进行介绍&#xff1a;&#xff08;这里针对阿里源和清华…