有没有办法比较两个列表与流媒体?

时间:2014-07-21 11:41:03

标签: java java-8

我有一个名为MyClass的班级,其中包含几个成员,其中一个是myString

public class MyClass{
  //...
  private String myString;
}

现在,我有一个MyClass的集合和另一个String的集合。

我的问题是:

如何将这两个系列与流媒体进行比较?这可能吗?

1 个答案:

答案 0 :(得分:7)

您可以将MyClass的列表映射到字符串列表,然后正常比较它们:

List<String> anotherList = listOfMyClass.stream()
      .map(MyClass::getMyString)  //Assuming that you have a getter for myString
      .collect(Collectors.toList()); 

您还可以在一个String中加入列表中的所有元素,并直接比较它们。只有在两个列表中元素的顺序相同时,这才有效。以下示例:

    final String joinSeparator = ", ";

    String firstResult = stringList
            .stream()
            .collect(Collectors.joining(joinSeparator));

    String secondResult = myClassList
            .stream()
            .map(MyClass::getMyString)
            .collect(Collectors.joining(joinSeparator));

    //Just compare them using equals:
    System.out.println(firstResult.equals(secondResult));