为了账号安全,请及时绑定邮箱和手机立即绑定

从数组中删除重复项集列表 |数组列表<集<字符串>> tmp

从数组中删除重复项集列表 |数组列表<集<字符串>> tmp

德玛西亚99 2022-09-07 17:28:40
我有一个字符串集的数组列表;ArrayList<Set<String>> tmp由于我的要求,我需要使用这种类型的数据结构。如何从中删除重复项?例如,如何转换;[[A, B, C], [B, A, C], [C, D, E], [E, C, D]]自[[A, B, C], [C, D, E]]我确实在这里浏览了其他类似的答案,但是它们将所有项目串联到一个列表中,对于上面的例子,我不想要这个[[A, B, C, D, E, F]]
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

就像你从任何其他 ArrayList 中删除重复项一样...

例如:

tmp.stream().distinct().collect(Collectors.toList());

注意:这假设列表项实现了合适的方法。正如他们应该的那样。equals


查看完整回答
反对 回复 2022-09-07
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

一种方法:


    List<Set<String>> tmp = new ArrayList<>();

    tmp.add(new HashSet<>(List.of("A", "B", "C")));

    tmp.add(new HashSet<>(List.of("B", "A", "C")));

    tmp.add(new HashSet<>(List.of("C", "D", "E")));

    tmp.add(new HashSet<>(List.of("E", "C", "D")));


    Iterator<Set<String>> it = tmp.iterator();

    while (it.hasNext())

    {

        Set<String> currentSet = it.next();


        for (Set<String> set : tmp)

        {

            if (currentSet != set

                    && currentSet.containsAll(set)

                    && currentSet.size() == set.size())

            {

                it.remove();

                break;

            }

        }

    }


    System.out.println(set);

输出:


[[A, B, C], [C, D, E]]


查看完整回答
反对 回复 2022-09-07
?
潇湘沐

TA贡献1816条经验 获得超6个赞

HashSet正在研究哈希算法,


因此,如果您有两组包含相同值的字符串,则该集合的哈希码将始终相同(因为字符串在java中具有特殊分配)。


所以你可以试试下面。


    List<Set<String>> tmp = new ArrayList<Set<String>>();

    tmp.add(new HashSet<>(Arrays.asList(new String[]{"A","B","C"})));

    tmp.add(new HashSet<>(Arrays.asList(new String[]{"B","A","C"})));

    tmp.add(new HashSet<>(Arrays.asList(new String[]{"C","D","E"})));

    tmp.add(new HashSet<>(Arrays.asList(new String[]{"E","C","D"})));


    List<Set<String>> list =new ArrayList<>();


    for(Set<String> s: tmp){

        if(!list.contains(s)){

            list.add(s);

        }

    }

    System.out.println(list);

结果会像


[[A, B, C], [C, D, E]]


查看完整回答
反对 回复 2022-09-07
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号