HashSet添加对象去重
来源:互联网 发布:java字符流写文件 编辑:程序博客网 时间:2024/05/17 23:30
1.去重原理
根据hashCode和equals方法去重。
先比较hashCode是否相等,若hashCode相等则不添加,若不相等,则再比较equals方法,若equals方法也相等,则往集合添加元素,否则不添加。
注意:hashSet的底层其实是一个HashMap的key值,不允许重复,详情看jdk源码。
2.代码示例
2.1实例对象(hashCode和equals方法Elipse自动生成即可,也可以按业务编写)
package Test;public class User { public User(String name, int age) { this.name = name; this.age = age; } private String name; private int age; @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; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; }}
2.2测试代码
import java.util.HashSet;import java.util.Set;public class Demo {public static void main(String[] args) {User xiaoming1 = new User("小明", 1);User xiaoming2 = new User("小明", 1);Set<User> set = new HashSet<>();set.add(xiaoming1);set.add(xiaoming2);System.out.println(set.size());}}
2.3打印结果
1
阅读全文
0 0
- HashSet添加对象去重
- 如何去重HashSet中的重复对象?
- HashSet去重
- HashSet去重
- HashSet 集合 去重
- HashSet去重
- HashSet去重原理
- set hashSet 去重
- hashset去重
- HashSet去重原理
- java HashSet去重示例
- HashSet的去重问题
- HashSet 对象去重复处理
- HashSet是如何去重的
- HashSet与TreeSet去重的区别
- 利用HashSet对数组去重
- List<对象>去重
- List<对象>去重
- ORA-28000: the account is locked 解决方法
- 引用类型和基本数据类型的传参问题
- bzoj2124 等差子序列 (树状数组 维护hash值)
- dubbo实战---lineNumber: 13;columnNumber: 82; cvc-elt.1: Cannot find the declaration of element 'beans'
- 概率论-最大似然估计
- HashSet添加对象去重
- 如何选择桌面云?
- Java多线程之Callable、Future和FutureTask
- aliyun,gdy云主机单双网卡/双IP/单双网关,同时上内外网新方案和总结
- 欢迎使用CSDN-markdown编辑器
- 用递归输出n的阶乘
- 实训第四天
- 机器学习与scikit-learn(一)——回归模型
- 邻接矩阵,邻接表表示图,深度优先遍历