Collections Java8-比较两个集合

Collections Java8-比较两个集合,collections,nunit,Collections,Nunit,我不知道如何在Java中比较两个相同的集合列表。 这应该可以工作,但由于void参数,它无法编译。断言需要返回值 assertTrue(dateTimeCreated.stream().forEach(t -> dateTimeUpdated.stream().allMatch(u-> u.compareTo(t) >= 0))); 有谁能帮我指定比较并与assert一起使用吗? 谢谢,因为您正在检查列表是否包含与它相同的元素。您需要使用其中一种方式: list2.strea

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

assertTrue(dateTimeCreated.stream().forEach(t -> dateTimeUpdated.stream().allMatch(u-> u.compareTo(t) >= 0)));
有谁能帮我指定比较并与assert一起使用吗?
谢谢,因为您正在检查列表是否包含与它相同的元素。您需要使用其中一种方式:

list2.stream.filterlist1::contains.count==list2.size


这将检查您收到的退货清单是否与您检查的内容相同如果我理解正确,这就是您试图实现的目标:

boolean allGreater = true;
for (int i = 0; i < dateTimeCreated.size(); i++)
    if (!(dateTimeCreated.get(i).compareTo(dateTimeUpdated.get(i)) <= 0))
        allGreater = false;
assertTrue(allGreater);
您可以流式计算索引并检查条件,然后:

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

用allMatch取代forEach难道还不够吗?取决于实际要测试的内容。您正在将整个列表与单个元素dateTimeUpdated.stream.allMatchu->u.compareTot>=0进行比较。我需要将每个元素与第二个列表中的另一个元素进行比较。我希望避免使用for each循环。不,我需要比较两个列表之间的两个字符串元素。我需要逐一检查它们的值是否相等/更大。输出取决于您的问题。是的,我检查了,并且两个列表都相等。它们具有相同数量的元素。我只想比较A[0]和B[0],A[1]和B[1]等等。。。列表A中的所有元素必须大于或等于列表B中的元素。这是我关心的问题,如何通过stream实现。我使用以下代码完成了解决方案,但我希望使用stream:for int I=0;i=0;}非常感谢。这正是我想要的。我认为使用stream比使用old for cycle方法更好,但我并不擅长Java 8 lambdas…@Michal我再次考虑了解决方案,发现没有必要将IntStream转换为流,因为IntStream还提供了allMatch方法。现在它确实比循环短得多。