我想将列表中的项目添加到另一个列表而不重复.我使用了下面涉及一组的方法.这是实现最终结果的最有效方式吗?是否有更简洁的方法来更新lista以包含唯一的setboth对象?
Set setboth = new HashSet(lista);
setboth.addAll(listb);
lista.clear();
lista.addAll(setboth);
Run Code Online (Sandbox Code Playgroud)
看起来不错,但这取决于项目是否实现equals和hashCode.
HashSet数据结构依赖于equals和hashCode的有效实现.具有为两个实例显示相同字符串的toString()实现的类将不被视为同一实例,除非两个实例也返回相同的哈希代码,并且在equals上返回true.
或者你可以这样做:
list1.removeAll(list2);
list2.addAll(list1);
Run Code Online (Sandbox Code Playgroud)
但它可能比使用HashSet慢,具体取决于List实现类.此外,它会更改原始列表之一(在您的上下文中可能是也可能不是选项)