2017-12-30 38 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

거기에 '엿보기'가 있습니다. – Eugene

답변

1

당신은 수집 된 LinkedHashMap에 관심이없는 :

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

또는 더 나은 :

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를 사용하지 수 있으며, 그것은 더 이상 수집 할 수 없습니다 것을 의미합니다.

당신은 forEach을 적용 후 (당신은 그들이 파이프 라인에서 특정 지점을지나 흐름으로 요소를보고 싶어 주로 지원하는 디버깅) 특정 작업을 수행 할 peek 중간 작업을 사용하고 collect 또는 collect 및 수 있습니다 당신이 한 것처럼. 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 터미널 작업을 연결하고 데이터를 인쇄 할 수 있습니다.

경우