Java hashset怎么判断到重复数据给出提示

hashset 默认重复数据直接不添加进去没有任何提示,我想在判断重复数据的时候给出一个提示该怎么写呢。

HashSet添加重复元素,进行提示 , 那么可以自定一个HashSet类, 对add方法进行重写即可;

参考代码如下

import java.util.HashSet;
//自定义一个HashSet类
class MyHashSet<E> extends HashSet<E> {
//重写add方法即可,但数据已经存在,就给出提示
//源代码里addAll方法里还是会调用add方法; 所以不用重写addAll方法
@Override
public boolean add(E e) {
if(this.contains(e)){
System.out.println(e+"该数据已经存在了");
}
return super.add(e);
}

}
//测试类
public class Test {
public static void main(String[] args) {
MyHashSet<String> set = new MyHashSet<String>();
set.add("Jack");
set.add("Lucy");
set.add("Jack");//重复添加会进行提示

HashSet<String> set2 = new HashSet<>();
set2.add("Apple");
set2.add("Lucy");

set.addAll(set2); //重复添加,还是会进行提示

System.out.println(set);
}
}

测试结果

Jack该数据已经存在了
Lucy该数据已经存在了
[Apple, Lucy, Jack]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-11

hashset默认加如重复元素是不提示的,但是内部会把重复的剔除掉。

要提示的话add的时候加入判断:

Set<String> setX = new HashSet<>(5);
setX.add("a");
for (String str: setX) {
 if(setX.contains(str)){
     System.out.println("添加元素重复了....");
     continue;
 }else{
     setX.add("a");
 }
}

本回答被提问者采纳
第2个回答  2019-05-11
可以在add前 先contains()啊, 这个才是正确思路
相似回答