2016-05-11 10 views
0

リストがあると私は、このやっているJavaのコレクションストリーム上のマップとフィルタの違い

List<String> myList = new ArrayList<String>(); 
myList.add("okay"); 
myList.add("omg"); 
myList.add("kk"); 

を言う:

List<String> fianllist = myStream.map(item -> item.toUpperCase()).filter(item 
->item.startsWith("O")).collect(Collectors.toList()); 

私の質問は、両方のようにマップとフィルターの間にどのような違いですがラムダ式をパラメータとして受け取ることができます。何か説明してもらえますか?

+3

あなたはJavadocを読みましたこの:それがtrueを返す場合 は、アイテムを濾過などのため を(無視)そのほかのリストに追加されますか?彼らは全く違うことをする。 – Eran

+0

'map'は、渡されたストリーム要素(String)を他のもの、ここでは他のString値にマップしますが、Integerでもかまいません。 'filter'は条件に合わない要素を削除します。 –

+0

これはデータベースクエリとみなされます。 name = "John"(フィルター)のユーザーから名前(マップ)を選択します。 – sergiu

答えて

5

マップを使用すると、オブジェクト値を変換できます。

地図操作を使用すると、あるタイプのパラメータをとり、何か他のものを返す関数を適用できます。

フィルタを使用してデータをフィルタリングする場合は、常にがブール値を返します。あなたが訪問することができます。このトピックの詳細については

List<Person> persons = … 
Stream<Person> personsOver18 = persons.stream().filter(p -> p.getAge() > 18); 

link

関連する問題