【问题标题】:Find Element that exists in each list in List of Lists在 List of Lists 中查找每个列表中存在的元素
【发布时间】:2012-07-05 18:27:05
【问题描述】:

我在 java (grails) 中有一个列表列表,我正在尝试查找列表中每个列表中存在的元素。有没有人有一个快速的方法来做到这一点?谢谢!

【问题讨论】:

  • “有人有快速的方法吗?” 请互联网上的陌生人为你做这件事? What have you tried?
  • 我尝试了retainAll,但我认为这是针对集合的。有没有简单的方法在 grails 中实现集合?
  • retainAll 应该可以正常工作,如果您正确使用它。你能告诉我们你是如何尝试使用它的吗?出了什么问题?
  • 我认为我必须遍历列表才能到达每个列表,但我该如何开始使用 retainAll?

标签: java list grails


【解决方案1】:

如果列表有独特的元素,你可以这样做(但独特的元素我知道一个元素可以放在几个列表中,但每个列表只能放置一次。否则,如果第一个列表包含 [1,2,2,3]和其他包含 [x,2,y] 作为输出,您将看到 [2,2] 而不是 [2] )

List tmpList=new ArrayList<>(lists.get(0));
for(int i=1; i<lists.size(); i++)
    tmpList.retainAll(new ArrayList<>(lists.get(i)));
System.out.println(tmpList);

【讨论】:

    【解决方案2】:

    获取 1 个链接列表,将其复制,然后对照所有其他链接列表进行检查。

    如果列表没有元素,则从新创建的列表中删除该元素。

    您可以将新创建​​的列表实现为映射或哈希表,以稍微降低时间复杂度。

    无论哪种方式,除非您的列表已排序或其他方式,否则您的算法不会比 O(n) 更快,其中 n 是所有列表中所有元素的总和

    我概述的算法是 O(nm),其中 m 是最小列表的计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 2014-07-13
      • 2014-04-22
      • 1970-01-01
      • 2015-08-14
      • 2021-06-22
      相关资源
      最近更新 更多