自定义HashSet类

时间:2014-06-13 07:25:20

标签: java collections

我想在java中创建自定义HashSet类,该类包含Hashset类的所有重写方法这些行为符合我的要求。 有可能吗?

class MyCustomHashSet<String> extends HashSet<String>{
    @Override
    public boolean add(String e) {

        return super.add(e);
    }
    @Override
    public int hashCode() {
        return super.hashCode();
    }
    @Override
    public boolean contains(Object o) {

        return super.contains(o);
    }
}

public static void main(String[] args) {


        Set<String> set = new MyCustomHashSet<String>();
        set.add("Abc");
        set.add("abc");

    System.out.println("Size---"+set.size());
    System.out.println(set);

    }

在main方法中我要添加2个相同的字符串但是包含不同的大写小写,我只想要一个我先添加的结果.....

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你试图让HashSet不区分大小写,这意味着如果我添加"Abc"然后"abc",它应该只保留"Abc"

正如用户3580294在评论中指出的那样,您应该为您的集MyCustomHashSet而不是MyCustomHashSet<String>命名。

然后,您可以覆盖add(String)方法以检查字符串是否在集合中,如:

@Override
public boolean add(String e) {
    for(String current : this) {
        if(e.equalsIgnoreCase(current)) {
            return false; //if string is already in the set, we don't add it.
        }
    }
    return super.add(e);
}

您可以看到实时工作示例here