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

Has*_*lef 3 java java-8

我有一个叫做MyClass包含几个成员的类,其中一个是myString:

public class MyClass{
  //...
  private String myString;
}
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:

如何将这两个集合与流媒体进行比较?那可能吗?

Mar*_*des 7

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

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

您还可以将列表中的所有元素连接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));
Run Code Online (Sandbox Code Playgroud)