小编m5k*_*han的帖子

Java:重复的对象被添加到set?

如果我运行以下代码,则输出为2,这意味着该集合包含2个元素.但是我认为该集应该包含1,因为两个对象基于hashcode()值以及.equals()方法是相等的.在我的理解中似乎有些明显的错误?

package HELLO;

import java.util.HashSet;
import java.util.Set;

public class Test {

    public static void main(String[] args) throws Exception {
        Set<Alpha> s = new HashSet<Alpha>();
        Alpha a1 = new Alpha();
        Alpha a2 = new Alpha();
        s.add(a1);
        s.add(a2);
        System.out.println(s.size());
    }
}   

class Alpha {
    int a = 10;

    public int hashcode() {
        return a;
    }

    public boolean equals(Object obj) {
        return (obj instanceof Alpha && ((Alpha) obj).a == this.a);
    }

    public String toString() {
        return "Alpha : " …
Run Code Online (Sandbox Code Playgroud)

java hash hashcode hashset

16
推荐指数
1
解决办法
4万
查看次数

标签 统计

hash ×1

hashcode ×1

hashset ×1

java ×1