Java 8 - 比较两个集合

Java 8 - Compare two collections

我不知道如何比较 Java 中的两个相同集合列表。 这应该可行,但由于 void 参数而无法编译。断言需要 return 值。

assertTrue(dateTimeCreated.stream().forEach(t -> dateTimeUpdated.stream().allMatch(u-> u.compareTo(t) >= 0)));

任何人都可以帮助我如何指定比较并将其与断言一起使用吗? 谢谢

因为您正在检查列表是否包含与它相同的元素。您需要使用其他方式,其中之一可以是:

list2.stream().filter(list1::contains).count() == list2.size()

这将检查您正在获取的天气 return 列表具有您正在检查的相同元素

如果我没理解错的话,这就是你要实现的目标:

boolean allGreater = true;
for (int i = 0; i < dateTimeCreated.size(); i++)
    if (!(dateTimeCreated.get(i).compareTo(dateTimeUpdated.get(i)) <= 0))
        allGreater = false;
assertTrue(allGreater);

你可以stream来统计索引然后查看条件:

assertTrue(IntStream.range(0, dateTimeCreated.size())
                    .allMatch(i -> dateTimeCreated.get(i).compareTo(dateTimeUpdated.get(i)) <= 0));