java - 如何仅捕获 ArrayList 中的重复元素?

标签 java arraylist duplicates java-stream

我需要在我的 ArrayList 中获取所有重复项。我不需要删除重复项,我需要将它们添加到另一个 ArrayList 。下面是一个例子:

ArrayList<String> var = new ArrayList<>();
var.add("a");
var.add("b");
var.add("b");
var.add("c");
因此,如您所见,有 2 个重复元素(b 和 b)。我需要将它们添加到另一个 ArrayList。
在这种情况下生成的 ArrayList 应该是 [b,b] 。我怎样才能做到这一点?

最佳答案

您可以使用 HashMap 来存储每次迭代时 String 的出现次数。
然后,对于出现多次的元素,将它们的 n 次添加到新的 List 中:

List<String> var = new ArrayList<>();
var.add("a");
var.add("b");
var.add("b");
var.add("c");
        
Map<String, Integer> map = new HashMap<>();
for(String str : var) {
    if(map.containsKey(str))
        map.put(str, map.get(str)+1);
    else
        map.put(str, 1);
}
        
List<String> duplicates = new ArrayList<>();
for (String str : var) {
    int count = map.get(str);
    if(count > 1) {
        duplicates.add(str);
    }
}
        
System.out.println(duplicates);
输出:
[b,b]

关于java - 如何仅捕获 ArrayList 中的重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65470475/

相关文章:

Java SAX 解析

java - 了解 ArrayList 以及它们如何用于 TUI

ArrayList 中的 Java 对象方法

java - JSP - 当值重复时如何打印出空的 <td>?

sql - 如何使用 Active Record 查找包含重复数据的记录

java - 在这种情况下有没有办法完全避免重复代码?

java - "No context factory"使用JBoss的VFS时抛出异常

java - 剪掉左边一个JLabel的文字

java - 如何使用 JavaFX 将复选框的值传递给另一个方法?

java - 将 wav 文件放入由帧集合组成的 ArrayList 中