java - 奇怪的 HashSet 行为

标签 java

这是我实现的一部分

aFList = new HashSet<Fault>();
bFList = new HashSet<Fault>();
oFList = new HashSet<Fault>();

temp.addAll(aFList);
temp.addAll(bFList);
oFList.addAll(temp);

故障分类如下

public class Fault {
    int nodeIndex;
    boolean val;
}

Display() {
    Object [] temp;
    temp = aFList2.toArray();
    for(int i=0;i<temp.length;i++)
        ((Fault) temp[i]).display();
}

结果:

14_true 
6_true 
17_false 
16_false 
16_false 
9_false 
14_true 

问题:为什么我会得到重复的列表元素?可能是因为 oFList 已经包含这些元素,但我认为 HashSet 会处理重复项。我错过了什么吗?

最佳答案

如果您要将类放入 HashMap 或 HashSet 中,则必须实现 equals() 和 hashCode()。

关于java - 奇怪的 HashSet 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7869664/

相关文章:

java - 如何计算康威生命游戏中一个细胞的活邻居?

java - Pig 自定义 loadFunc 始终使用 1 个映射器和 1 个 inputSplit

java - 数字计数功能

java - 可以从 null 转换为 int 吗?

java - 如何使用 postman 或API从 "Download"文件夹下载文件

java - 两个线程同时完成并访问相同的方法

java - javax.ejb.Singleton在集群环境下单例如何?

java - 尝试学习Java中的继承

Java - 顺序异步执行

java - 更改 ViewPager 内显示的 fragment