私は複数のエントリを含むLinkedHashMapを持っています。最初のステップで複数のエントリを1つに減らし、それを1つのStringにマッピングするよりも、たとえば : は、私はこのような地図で始めている:Java 8ストリームリダクションマップ
{"<a>"="</a>", "<b>"="</b>", "<c>"="</c>", "<d>"="</d>"}
そして最後に、私はこのような文字列を取得したい:(
<a><b><c><d></d></c></b></a>
その場合、文字列のキーが含まれています私はmap.entrySet()。stream()。reduce()が必要だと思いますが、私は持っているどのようにreduceメソッドに書き込むべきか、どのように続行するかはわかりません。ここ
「複数のエントリを1つに減らす」という意味ははっきりしません。何の一つ? 1つのエントリ?そして、あなたは一般的な解決策をどういう意味ですか? – gdejohn
私は、複数のエントリーを一つのエントリーに減らしたいと思います。 reduce()メソッドはBinaryOperatorを使用します。私の例では、このBinaryOperatorは2つのエントリを取得し、2つのキーを連結し、2つの値を「逆方向連結」します。しかし、私はそれを実装する方法を知らない。 またreduce()にはidentity要素が必要です –
中間の縮小エントリが存在するのは本当に要件ですか?これは、「私は一般的な解決策を望んでいる」という陳述と矛盾する。例えば。あなたは単純に 'String result = String.join(" "、map.keySet())+ map.values()。stream()。reduce(" "、(a、b) - > b + a);' 。あなたが単一の 'Stream'オペレーションを主張するならば、あなたは' String result = Stream.concat(map.keySet()。stream()、map.values()。stream()。collect(ArrayDeque :: new、 Map.Entry'インスタンスを構築せずに、ArrayDeque :: addFirst、(a、b) - > b.descendingIterator().EachRemaining(a :: addFirst))ストリーム()).collect(Collectors.joining()); 。 –
Holger