java - 从 ArrayList<ArrayList<String>> 对象中删除重复项

标签 java

我有一个 ArrayList,其中有一个嵌套的字符串 ArrayList,我想从中删除重复项。我知道如果我总是想删除重复项,我不应该使用 ArrayList,但在某些情况下重复项是有效的。从嵌套 ArrayList 中删除重复项的最佳方法是什么?

例如,我想执行一些转换的 Java:

[[duplicate], [duplicate], [duplicate], [unique1], [unique2]]

致:

[[duplicate], [unique1], [unique2]]

最佳答案

要从 ArrayList 中删除重复项,您可以这样做

yourList = new ArrayList<String>(new LinkedHashSet<String>(yourList));

使用 LinkedHashSet 而不是 HashSet 可确保保留原始列表的顺序。

<小时/>

关于您的评论:

这是一个将 [[1,2,3], [1,2], [3], [1,2]] 转换为 [[1,2, 3]、[1,2]、[3]]

Set<String> seen = new HashSet<String>();
for (List<String> l : strLists) {
    for (Iterator<String> iter = l.iterator(); iter.hasNext(); )
        if (!seen.add(iter.next()))
            iter.remove();

    // If you want to remove lists that end up empty:
    if (l.isEmpty())
        strLists.remove(l);
}

关于java - 从 ArrayList<ArrayList<String>> 对象中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896112/

相关文章:

java - spring boot自动创建数据库schema报错

java - @WebMvcTest 在 spring 启动测试中为不同的服务给出 'Error creating bean with name' 错误

java - freemarkers 跳过 assertNotNull InvalidReferenceException

java - 面向组件的软件和设计

java - 如何检测JFrame窗口最小化和最大化事件?

java - protected 成员从 java 中的不同包访问 - 一个好奇心

java - 在 JAVA Servlet 中将 Runnable.run() 转换为 Callable.call()

java - 为 DecimalFormat 类指定自定义格式

java - 3路归并排序

java - 以粗体和带下划线的样式将字符串写入文件