我遇到了一个看似简单的问题,但我一直无法弄清楚。基本上,我的列表包含许多代表不同项目的整数,这工作得很好,但我需要能够检查列表是否多次包含相同的整数,然后将它们从列表中删除。
if (myList.contains(100)) { // I want to check if the int '100' exists in myList twice
myList.remove(new Integer(100)); // I want to remove the 2 aforementioned duplicate integers
}
如果我的解释不是最清楚,我深表歉意。提前致谢!
编辑:为了澄清,我希望列表包含重复项,但我希望能够检查重复项是否存在 X 次,然后从列表中删除这些实例。
即
我可能想添加 int 100
7 次,然后检查它是否存在两次,然后仅从列表中删除它的 2
实例。
最佳答案
您可以创建一个方法来完成手头的任务,大致如下:
private static boolean removeSpecfiedNumber(int number,int numberOfTimes, List<Integer> integerList){
if(integerList.stream().filter(x -> x == number).count() >= numberOfTimes){
for (int i = 0; i < numberOfTimes; i++) {
integerList.remove((Integer)number);
}
return true;
}
return false;
}
- 参数
number
是您要检查其出现情况的数字,即您的情况下的100
。 - 参数
numberOfTimes
是您想要从列表中删除该元素的次数。 - 参数
integerList
当然是您要从中删除元素的列表。
我们以下面的代码为例:
List<Integer> myList = new ArrayList<>();
myList.add(100);
myList.add(200);
myList.add(100);
myList.add(100);
myList.add(100);
myList.add(100);
myList.add(100);
myList.add(100);
removeSpecfiedNumber(100,2,myList);
System.out.println(myList);
这将从 myList
中删除 100
两次,因此应该产生以下元素:
[200, 100, 100, 100, 100, 100]
如果您愿意,方法返回类型可以是void
,但是,boolean
的返回类型有时会派上用场,因此我使用了这种方法。
此外,如果您正在处理对象,则无需使用 static
修饰符,因此可以将其删除。
关于java - 检查 ArrayList 是否包含超过 1 个相同的整数并将它们从列表中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44266039/