HashSet的元素是否可被修改
来源:互联网 发布:嵌入式软件 启动过程 编辑:程序博客网 时间:2024/06/05 00:08
import java.util.HashSet;public class main { private static class Test { int x = 0; public int getX() { return x; } public void setX(int x) { this.x = x; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Test test = (Test) o; return x == test.x; } @Override public int hashCode() { return x; } } public static void main(String[] args) { Test test = new Test(); HashSet<Test> set = new HashSet<>(); set.add(test); System.out.println(set.contains(test)); // true System.out.println(test.hashCode()); // 0 test.setX(100); System.out.println(set.contains(test)); // false 修改后set中的hashcode不变,对象的hashcode改变 System.out.println(test.hashCode()); // 100 System.out.println(set.size()); // 1 }}
这我认为应当分两种情况考虑:
- 没有重写equal和hashcode函数,可修改自定义对象(这里留意是自定义对象),因为hashcode是相当于对象地址的映射或者地址经过一系列的转换得到的值。
- 重写了equal和hashcode函数,无法修改自定义对象,如上,在不扩容的情况下,HashSet不会rehash,原有的对象的是无法被找到的,但是若在扩容的情况下,那就另当别论了。
0 0
- HashSet的元素是否可被修改
- HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- HashSet如何判断加入的元素是否相同?
- HashMap、HashSet、TreeMap、TreeSet判断元素是否存在的逻辑
- HashSet中是如何判断元素是否重复的
- HashSet中是如何判断元素是否重复的
- java HashSet 如何判断元素是否存在
- JavaScript---验证表单元素是否被修改
- JavaScript---验证表单元素是否被修改
- JAVA基础之——HashSet中是如何判断元素是否重复的
- 大表格,多Form元素的提交 判断表单数据是否有被修改过
- 离开页面时检测表单元素是否被修改,提示保存的js代码
- HashSet不能存放相同元素的原因
- HashSet判断元素相等的标准
- HashSet、TreeSet 去除Class重复的元素
- HashSet保证元素唯一性的原理
- HashSet如何保证元素的唯一性
- android之文件存储
- 计算系数
- 【light-oj】-1047 - Neighbor House(dp)
- struts2的基本配置详细流程解说
- Javascript学习笔记一:基础
- HashSet的元素是否可被修改
- 论文阅读:SSD: Single Shot MultiBox Detector
- Android事件分发机制完全解析(全)
- 【Abdroid】OpenCV IplImage和GDI+ Bitmap的相互转换
- C语言学习笔记 lesson7 常量
- C#中TransactionScope的使用方法和原理
- 结构体做函数参数
- poj 2345 Central Heating
- 微信公众号-写作主题