Javaのを使用すると、マップに変換コレクションにストリーム:値として事前定義列挙型を置く方法

ケイト:

私はロングのコレクションを持っている、との理由で、私はキーとしてコレクションの要素を持ち、かつ1は、(すべてのキーが同じ値を持つ)の値として列挙型をあらかじめ定義され、このコレクションからマップを作成する必要があります。

私は以下のように、ストリームでこれを達成しようとしています:

private Map<Long, Marker> mapMarker(Collection<Long> ids, Marker marker) {
    return ids.stream().collect(Collectors.toMap(Function.identity(), marker));
}

コンパイラは、このエラーで失敗しました:

no instance(s) of type variable(s) T, U exist so that Marker conforms to Function<? super T, ? extends U>

それが失敗する理由誰かが私に説明してもらえますか?ストリームと期待される結果を得るためにとにかくありますか?

また:

場合MarkerあなたがLLのキーに対してマップする列挙型であるids、あなたのようにそれを行うことができますが。

return ids.stream().collect(Collectors.toMap(Function.identity(), id -> marker));

あなただけのことを、非常に接近していたid -> markerであるFunctionため、予想通りCollectors.toMap

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=187070&siteId=1