私は与えられた名前のためColumnTagsのリストからcolumnSemanticTagsを取得したいクラス使用するJava 8作成するためのストリームとコレクション<Stream>
class ColumnTags {
String Name;
Collection<String> columnSemanticTags;
// constructor and getter and setters and other relevant attributes
}
を持っています。
public Collection<String> getTags(String colName, List<ColumnTags> colList)
{
Collection<String> tags = new ArrayList();
for(ColumnTag col:colList){
if(colName.equals(col.getName())){
tags = col.getColumnSemanticTags();
break;
}
}
return tags;
}
は、Javaストリームへのループを変換する次のように
対応する方法です。試しました
tags = colList.stream().filter(col -> colName.equals(col.getName()))
.map(col -> col.getColumnSemanticTags())
.collect(Collectors.toCollection());
コンパイルエラーです。私は何がサプライヤであるべきかを認識していません。 ArrayList :: newを試してみました。 ArrayListにキャストしようとしましたが、成功しませんでした。 誰かが私に間違っていると思われるものや、このシナリオを処理するための予想される方法を教えてもらえますか? 解決策では、誰かが.collect()がこの解決策に取り組むのに間違った方法である理由を説明することができます。
「Collections.emptyList()」ではなく、「ArrayList」を返す理由はありません。 – Holger