检查 Java 8 中的自定义对象列表是否具有相同的属性值

2022-09-01 18:00:10

我是 Java 8 的新手。我有一个类型A的自定义对象列表,其中A如下所示:

 class A {
      int id;
      String name;
 }

我想确定该列表中的所有对象是否具有相同的名称。我可以通过迭代列表并捕获名称的先前和当前值来执行此操作。在这种情况下,我发现了如何计算列表中对其属性之一具有相同值的自定义对象的数量。但是有没有更好的方法可以在java 8中使用流来做同样的事情呢?


答案 1

您可以从 --> ,应用中间操作,在可能的情况下利用来启用优化,然后检查是否小于或等于,在这种情况下,所有对象都具有相同的名称,如果不是,则它们不具有相同的名称。mapAStringdistinctlimit(2)count1

boolean result = myList.stream()
                       .map(A::getName)
                       .distinct()
                       .limit(2)
                       .count() <= 1;

在上面显示的示例中,我们利用该操作,以便在找到两个不同的对象名称后立即停止。limit(2)


答案 2

一种方法是获取第一个列表的名称,然后调用并检查该列表。allMatch

String firstName = yourListOfAs.get(0).name;
boolean allSameName = yourListOfAs.stream().allMatch(x -> x.name.equals(firstName));

推荐