我想知道如何在java中设置存储唯一数据而不是重复值?设置存储数据时是否有任何机制
问问题
2367 次
1 回答
5
java.util.Set#add(E)
内部调用jav.util.Map#put(K,V)
将您尝试添加的元素作为键传递,其中它检查当前集合中是否存在与键的 哈希码具有相同哈希码的元素(其中键是您尝试插入的元素)并且它还检查是否相等使用 equals() 方法。它只在哈希码或相等测试失败时添加到 Set。如果哈希码和相等测试都通过,那么它只是用当前值替换旧值。下面是 Set#add() 和 Map#put() 的来源。
public boolean add(E e) {
217 return map.put(e, PRESENT)==null;
218 }
public V put(K key, V value) {
387 if (key == null)
388 return putForNullKey(value);
389 int hash = hash(key.hashCode());
390 int i = indexFor(hash, table.length);
391 for (Entry<K,V> e = table[i]; e != null; e = e.next) {
392 Object k;
393 if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
394 V oldValue = e.value;
395 e.value = value;
396 e.recordAccess(this);
397 return oldValue;
398 }
399 }
400
401 modCount++;
402 addEntry(hash, key, value, i);
403 return null;
404 }
于 2013-03-15T16:29:30.493 回答