寻找重复算法 - Java

x.5*_*509 2 java algorithm hashtable hashmap

我有一组值,一个arraylist,我必须找到重复的键.一种方法是使用2个循环.并遍历列表中的每个值重新排列O(n2).

另一件事,我能做的就是将值作为键放在HashTable中.我相信,如果哈希表中已经存在相同的密钥,则会抛出异常.但它并没有抛出异常

    Hashtable<String, String> ht = new Hashtable<String, String>();

    for (int i = 0; i<20; i++){
        ht.put(String.valueOf(i%10), String.valueOf(i%10));
    }
Run Code Online (Sandbox Code Playgroud)

我明白错了吗?如果hastable/hashmap中已存在相同的密钥,那么它是否会抛出异常?

Mar*_*ers 5

我的建议是你要一个HashSet而不是一个Hashtable:

Set<String> ht = new HashSet<String>();

for (int i = 0; i<20; i++){
    if ( !ht.add(String.valueOf(i%10)) ) {
       //it already existed, throw an exception or whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你不关心你添加到地图的,你几乎肯定想要一个Set而不是一个Map/ table.