-1
我使用HashSet<String>
存储值,但一些字符串的碰撞具有相同的散列码。 HashSet如何处理碰撞。的Java HashSet的<String>对象
List<ClassA> getValuesFromA(){
}
List<ClassA> getValuesFromB(){
}
Set <String> a = new HashSet<String>(getValuesFromA()); // data overwritten due to hash code collision
Set <String> b = new HashSet<String>(getValuesFromB()); // data overwritten due to hash code collision
a.removeAll(b);
a.stream().forEach(t -> t.setSomeValue(X));
b.addAll(a);
我使用HashSet在O(1)中为每个元素然后b +(a - b)查找减号b。但是,在HashSet中存储数据时,一些数据被覆盖。有没有人有任何想法来执行此操作而不更改散列方法或数据结构?
“不过,虽然在HashSet的存储数据我失去了一些数据。”请更清楚一点。请注意,散列码冲突*不会丢失数据 - 它们只是使其查找值的效率稍低。请提供[mcve],因为您的问题目前尚不清楚。 –
(你可能只是想用'retainAll',顺便说一句。) –
检查了这一点:https://stackoverflow.com/questions/2851938/efficiently-finding-the-intersection-of-a-variable-number-of-台套的串 –