java - 检查 ArrayList 是否包含超过 1 个相同的整数并将它们从列表中删除?

标签 java

我遇到了一个看似简单的问题,但我一直无法弄清楚。基本上,我的列表包含许多代表不同项目的整数,这工作得很好,但我需要能够检查列表是否多次包含相同的整数,然后将它们从列表中删除。

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/

相关文章:

Java使用正则表达式转义连字符 "-"字符

java - 模拟中时间管理的静态类

java - 如何使用 Google API Java 客户端对联系人进行部分更新?

java - 当 Android 应用程序没有焦点时,如何保持其运行?

java - 具有单一源代码树的纯 Java 和 Android 的 Gradle 项目

java - java中的并发队列消耗之谜

java - 你觉得返回日志语句怎么样

java - 使用 java.util.regex.Pattern 在 java 中查找相似的 IP

java - GooglePlayService 需要更新但 PlayStore 没有更新

java - 依赖 Maven 项目的测试失败