我想在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个相同的字符串但是包含不同的大写小写,我只想要一个我先添加的结果.....
答案 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。