2017-12-17 25 views
0

ランダムな単語のリストを持っていますが、同じ長さの単語や同じ最初の文字をすべてフィルタリングしたいのですか?リストの要素をjava 8ストリームで比較する方法

要素をJava 8ストリームのリストでお互いにチェックする方法は? groupingByコレクタの使用を検討し、その後、同じ長さを持つすべての文字列の記録を維持するために

List<String> resultSet = myList.stream() 
       .filter(x -> x.startsWith("a")) 
       .collect(Collectors.toList()); 

:特定の文字/単語で始まる文字列のリストを取得するには

+1

'myList.stream() .filter(X:特定の長さ又は特定の単語/文字で始まるを有します== SIZE) .collect(Collectors.toList()); ' –

+2

**「条件でストリームをフィルタリングする」のような**の質問がたくさんありますが、それは重複していると確信しています。あなたは遭遇した問題は何ですか?何を試しましたか? – Andrew

+0

「同じ長さ」とは何ですか? "同じ最初の手紙"と何?お互い?リストが「Can」、「You」、「Take」、「Care」の場合、長さ3の単語が2つあり、長さが4の単語が2つあります。 "同じ長さの単語" ? * filtering *と* grouping *はまったく異なる操作であることに注意してください。 – Andreas

答えて

4

Map<Integer, List<String>> resultSet = myList.stream() 
      .collect(Collectors.groupingBy(String::length)); 

あなたは、あなたが行うことができます興味を持っている文字列の長さが正確わかっている場合:また

List<String> resultSet = myList.stream() 
       .filter(x -> x.length() == 5) 
       .collect(Collectors.toList()); 

を、あなたはそのいずれかの文字列のリストを維持するために、2つのフィルタ操作を組み合わせることができます - > x.startsWith( "XXX")|| X - > x.length()

List<String> resultSet = myList.stream() 
           .filter(x -> x.startsWith("a") || 
             x.length() == 5) 
           .collect(Collectors.toList()); 
関連する問題