2017-12-30 15 views
1

中間オブジェクトでキーでソートされた地図を印刷しています。LinkedHashMapは次のようになります。java 8 - キーでソートされたマップを印刷する

LinkedHashMap<String, AtomicInteger> sortedMap = wcMap.entrySet().stream() 
      .sorted(Map.Entry.comparingByKey()) 
      .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
        (oldValue, newValue) -> oldValue, LinkedHashMap::new)); 

sortedMap.forEach((k, v) -> System.out.println(String.format("%s ==>> %d",k, v.get()))); 

収集する前にストリームから直接印刷するにはどうすればよいですか?それはストリームを消費してしまうと、それはあなたがもはや収集しないことを意味しているため

+0

あなたはどういう意味ですか?チェーン 'forEach'? – Eugene

+0

収集する前に。 – Jeb

+0

「peek」があります – Eugene

答えて

1

wcMap.entrySet().stream() 
     .sorted(Map.Entry.comparingByKey()) 
     .map(e -> String.format("%s ==>> %d", e.getKey(), e.getValue().get())) 
     .forEachOrdered(System.out::println); 

それでも結果LinkedHashMapをしたい場合は、peek()を使用します。

wcMap.entrySet().stream() 
     .sorted(Map.Entry.comparingByKey()) 
     .peek(e -> System.out.println(String.format("%s ==>> %d", e.getKey(), e.getValue().get()))) 
     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
       (oldValue, newValue) -> oldValue, LinkedHashMap::new)); 
1

あなたはは、収集する前forEachを利用することはできません。

あなたが特定のアクション(主にあなたは彼らがパイプライン内の特定の点を越えて流れるよう要素を見たいと思ってデバッグをサポートするため)、その後、 collectまたは collectを実行するために peek中間操作を使用して、 forEachを適用することができますいずれか

あなたがしたように。 peek

例:あなたは、データを印刷する際にのみ興味があるなら

LinkedHashMap<String, AtomicInteger> sortedMap = wcMap.entrySet().stream() 
      .sorted(Map.Entry.comparingByKey()) 
      .peek(e -> System.out.println(String.format("%s ==>> %d", e.getKey(), e.getValue().get()))) 
      .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
        (oldValue, newValue) -> oldValue, LinkedHashMap::new)); 

また、それは不要だし、避けることができるようMapインスタンスに結果をダンプする必要はありません。したがって、sortedの操作の後にforEachターミナル操作を連鎖させ、データを印刷することができます。

wcMap.entrySet().stream() 
     .sorted(Map.Entry.comparingByKey()) 
     .forEachOrdered(e -> System.out.println(String.format("%s ==>> %d", e.getKey(), e.getValue().get())); 

あるいはさらに良い:あなたが収集LinkedHashMapに興味を持っていない場合には

関連する問題