【发布时间】:2014-08-12 18:43:30
【问题描述】:
我知道以前有人问过类似的问题,但它们通常会从 Arraylist 中删除所有指定的元素。
我需要做的是从我的 ArrayList 中删除值对(如果一个数字出现 3 次,它将删除该元素的 2 个副本并留下其中 1 个)。更一般地,如果一个数字出现奇数次,则保留 1,如果一个数字出现偶数次,则将它们全部删除。因此,如果我的 Arraylist 是这样的
[5, 4, 3, 3, 2, 1, 2, 3, 1],
输出将是
[5,4,3]
由于数字“2”出现了两次,因此完全删除。与数字“1”相同。但由于数字“3”出现了 3 次,因此将其中一个留在 ArrayList 中,因为我只想成对删除数字。
我根本不在乎订购,因为无论如何我都会重新订购。
有没有人对此有任何建议?我想我可以使用 for 循环反复比较每个值,但它似乎效率低下,所以我很好奇是否有更好的方法。
谢谢!
【问题讨论】:
-
我根本不关心排序然后使用不允许重复值的
Set。 -
请澄清您的问题 .. 我不明白 2 或 1 不会出现在我们的输出集中
-
我也不清楚。
-
@user3218114 如果该数字仅出现两次,那么集合是否不会在其中留下一个值?如果是这样,那么这将不适用于我需要它。数字必须成对删除。
-
如果原始数组中有四个值会怎样?删除两个,还是删除所有(两对)?
标签: java arraylist compare elements