【问题标题】:Compare two collections for being equal (same entries, same order) using Stream API, Lambdas etc. in Java使用 Java 中的 Stream API、Lambda 等比较两个集合是否相等(相同的条目、相同的顺序)
【发布时间】:2016-07-01 10:24:57
【问题描述】:

我搜索了一些 SO 示例,但它们只涉及 Java 1.7。我想使用版本 8 功能来实现它。是否有某种最佳实践甚至现成的方法来做到这一点?我什么都不好。到目前为止,对于给定的两个集合(变量名称“第一”和“第二”),我只能想到某事。像这样:

first.forEach(first -> first.equals(second));

有什么建议吗?

更新 我尝试比较的两种类型的集合是 Set 和 Collection 本身。

【问题讨论】:

  • first.equals(second)?您的具体收藏是什么?
  • 您能否向我们展示您尝试比较的集合的示例?
  • 什么是“收藏本身”?
  • Set 没有订单,Collection 也没有。 Set 没有理由与 自身 具有相同的顺序 - 即迭代顺序可以更改。你问的完全没有任何意义。

标签: java collections lambda comparison java-stream


【解决方案1】:

如果您想比较值和顺序是否相同,您可以使用.equals()

List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list3 = Arrays.asList(2, 1, 3, 4, 5);

System.out.println(list1.equals(list2));
System.out.println(list1.equals(list3));

输出:

true
false

【讨论】:

  • 问题出现了,我想,当你有一个List 和一个Set 时。这确实引出了在这种情况下“相同顺序”意味着什么的问题。 OP 需要详细说明要求。
  • @BoristheSpider 是的,如果他的要求变得更清楚,我会调整我的答案。
猜你喜欢
  • 2016-03-06
  • 1970-01-01
  • 2020-12-17
  • 2013-08-18
  • 2010-09-08
  • 2012-04-09
  • 2022-01-04
  • 2014-11-09
  • 2015-09-16
相关资源
最近更新 更多