問題タブ [collectors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
44330 参照

java - Collectors.groupingBy は null キーを受け入れません

Java 8では、これは機能します:

しかし、これはしません:

Maps は null キーを許可し、List.class.getSuperclass() は null を返します。ただし、Collectors.groupingBy は Collectors.java の 907 行目で NPE を発行します。

この行を次のように変更して、独自のコレクターを作成すると機能します。

私の質問は次のとおりです。

1) Collectors.groupingBy の Javadoc は、null キーをマップすべきではないとは言っていません。この動作は何らかの理由で必要ですか?

2) 独自のコレクターを作成せずに、null キーを受け入れる別の簡単な方法はありますか?

0 投票する
8 に答える
245630 参照

java - Java8 ストリームの要素を既存のリストに追加する方法

Collector の Javadoc は、ストリームの要素を新しいリストに収集する方法を示しています。結果を既存の ArrayList に追加するワンライナーはありますか?

0 投票する
1 に答える
1073 参照

java - Java 8 コレクター API

この質問には、Java 8 コレクターを使用した要素のマッピングとグループ化が含まれます。私は患者のリストを持っています。各患者には、訪問した部門のリストがあります。Java 8 の新しいコレクター API を使用して各部門が訪問された回数をカウントしたい場合、部門リストでグループ化するにはどうすればよいでしょうか?

ありがとう!

注:各部門にカウンターを配置できることはわかっています。この質問は、Java 8 の新しい機能を学習することのみを目的としています。

コード:

私の主な方法では、患者のリストを持っています。Department クラスを編集 (または拡張または装飾) せずに、Department ごとに訪問された回数を知りたいです。

患者の流れを取り、それらを部門->カウント(各患者がどの部門を何回訪れたか)のマップにマッピングする必要があると思います。これらのマップのストリームを持つ - これらのマップをグループ化してカウントするために何をすべきかわかりません。

0 投票する
3 に答える
6195 参照

java - List を Map に変換し、null キーをフィルタリングする

Java 8ストリームを使用して、 Java 8 List<V> から Map<K, V> へのソリューションで説明されているように、リストをマップに変換したいと考えています。ただし、値をキーに 2 回変換することなく、特定のキー (たとえば、キーが null の場合) を持つエントリを削除するようにフィルター処理したいと考えています。

たとえば、次のように収集する前にフィルタリングを行うことができます

私の場合、キーを取得するためのロジックは、単純にフィールド プロパティを取得するよりも複雑です。最初にフィルターでロジックを実行し、次に Collectors.toMap の keyMapper 関数でロジックを実行することは避けたいと思います。

カスタム keyMapper 関数を使用してリストをマップに変換し、新しいキーに基づいて特定の値をフィルタリングするにはどうすればよいですか?

0 投票する
12 に答える
135094 参照

java - null エントリ値を持つ Collectors.toMap の NullPointerException

Collectors.toMapNullPointerException値の 1 つが の場合、 をスローしますnull。私はこの動作を理解していません。マップには問題なく null ポインターを値として含めることができます。の値を null にできない正当な理由はありますCollectors.toMapか?

また、これを修正する素敵なJava 8の方法はありますか、それとも単純な古いforループに戻す必要がありますか?

私の問題の例:

スタックトレース:

この問題は、Java 11 にも存在します。

0 投票する
3 に答える
85066 参照

java - ハッシュマップの収集>ジャバ8

Listaを aに変換できるようにしたいと考えていますHashMap。ここで、キーは でelementNameあり、値はランダムなもののリストです (この場合は要素名)。つまり、私は(A->List(A), B->List(B), C-> List(C))が欲しいのです。toMap()and を使用して渡そうとしkeyMapperましValueMapperたが、コンパイルエラーが発生します。誰かが私を助けてくれれば本当に感謝しています。

ありがとう!

===これは私のために働いた

みんな助けてくれてありがとう!@izstas「要素を操作する必要があります」は大いに役立ちました:)。実際、これは私が正確に探していたものです