2014-07-21 68 views
3

我有一個名爲MyClass類,它包含幾個成員,其中一人是myString有沒有比較兩個列表與流的方式?

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

現在,我有一個MyClass收集和String另一個集合。

我的問題是:

如何將這些兩個集合與流比較?那可能嗎?

+0

你是什麼意思,通過比較?你想看看他們兩個(所有元素)是否嚴格相等? –

+0

是的,我想確保它們都有相同的字符串。不多也不少。 – Hasholef

+0

我的主要問題是如何只將一個類的成員拉出到不同的集合中。 – Hasholef

回答

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));