タグ付けされた質問 「collectors」

12
Collectors.toMapのJava 8 NullPointerException
Java 8 は、値の1つが「null」の場合にCollectors.toMapaをスローしNullPointerExceptionます。私はこの振る舞いを理解していません、マップは問題なく値としてnullポインターを含むことができます。値をnullにできない正当な理由はありますCollectors.toMapか? また、これを修正するためのJava 8の優れた方法はありますか、それとも、従来のforループに戻す必要がありますか? 私の問題の例: import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; class Answer { private int id; private Boolean answer; Answer() { } Answer(int id, Boolean answer) { this.id = id; this.answer = answer; } public int getId() { return id; } public void setId(int id) { …

9
Java8:Stream / Map-Reduce / Collectorを使用してHashMap <X、Y>からHashMap <X、Z>へ
単純なJava ListをY-&gt; から「変換」する方法を知っていますZ。つまり、 List&lt;String&gt; x; List&lt;Integer&gt; y = x.stream() .map(s -&gt; Integer.parseInt(s)) .collect(Collectors.toList()); 今、私はマップと基本的に同じことをしたいと思います、すなわち: INPUT: { "key1" -&gt; "41", // "41" and "42" "key2" -&gt; "42 // are Strings } OUTPUT: { "key1" -&gt; 41, // 41 and 42 "key2" -&gt; 42 // are Integers } ソリューションはString-&gt;に限定されるべきではありませんInteger。List上記の例のように、任意のメソッド(またはコンストラクター)を呼び出します。



5
マップとは異なる値を持つマップを作成する方法(およびBinaryOperatorを使用して正しいキーを使用する方法)
私はマップを持ってMap&lt;K, V&gt;おり、私の目標は重複した値を削除して、まったく同じ構造をMap&lt;K, V&gt;再び出力することです。重複値が見つかった場合には、一つのキー(が選択されなければならないk二つの鍵(から)k1とk1、これらの値を保持する)、このため、想定BinaryOperator&lt;K&gt;を与えるkからk1とk2入手可能です。 入力と出力の例: // Input Map&lt;Integer, String&gt; map = new HashMap&lt;&gt;(); map.put(1, "apple"); map.put(5, "apple"); map.put(4, "orange"); map.put(3, "apple"); map.put(2, "orange"); // Output: {5=apple, 4=orange} // the key is the largest possible 使用して私の試みはStream::collect(Supplier, BiConsumer, BiConsumer)あるビット非常に不器用とのような変更可能な操作が含まMap::putとMap::remove私は避けたいたの。 // // the key is the largest integer possible (following the example above) final …

4
Collectors.toMapまたはgroupingByを使用して、マップのマップ操作の結果を収集する
タイプのリストがList&lt;A&gt;あり、マップ操作List&lt;B&gt;で、1つのリストにマージされたすべてのA要素のタイプの集合リストを取得します。 List&lt;A&gt; listofA = [A1, A2, A3, A4, A5, ...] List&lt;B&gt; listofB = listofA.stream() .map(a -&gt; repo.getListofB(a)) .flatMap(Collection::stream) .collect(Collectors.toList()); フラットマップなし List&lt;List&lt;B&gt;&gt; listOflistofB = listofA.stream() .map(a -&gt; repo.getListofB(a)) .collect(Collectors.toList()); タイプのマップとして結果を収集したい Map&lt;A, List&lt;B&gt;&gt;と、これまでに様々にしようとCollectors.toMapか、Collectors.groupingBy望ましい結果を得ることができたオプションはありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.