在Java中删除数组中重复项的最佳方法是什么?
2022-09-03 09:24:10
我有一个对象数组,需要删除/过滤重复项。我打算在对象元素上覆盖equals和hachCode,然后将它们粘贴到一个Set中......但我认为我至少应该轮询堆栈溢出,看看是否有另一种方法,也许是其他API的一些聪明方法?
我有一个对象数组,需要删除/过滤重复项。我打算在对象元素上覆盖equals和hachCode,然后将它们粘贴到一个Set中......但我认为我至少应该轮询堆栈溢出,看看是否有另一种方法,也许是其他API的一些聪明方法?
我同意您覆盖和使用实现.hashCode()
equals()
Set
这样做还可以使任何其他开发人员绝对清楚需要非重复特征。
另一个原因 - 您现在可以选择最能满足您需求的实现:
并且您不必更改代码即可在将来更改实现。
我在网上找到了这个
下面是两种方法,可用于删除 ArrayList 中的重复项。removeDuplicate 不保持作为 removeDuplicateWithOrder 保持顺序,但会产生一些性能开销。
删除重复方法:
/** List order not maintained **/
public static void removeDuplicate(ArrayList arlList)
{
HashSet h = new HashSet(arlList);
arlList.clear();
arlList.addAll(h);
}
删除重复使用顺序方法:
/** List order maintained **/
public static void removeDuplicateWithOrder(ArrayList arlList)
{
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = arlList.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
arlList.clear();
arlList.addAll(newList);
}