2016-06-22 2 views
2

질문 : 람다 표현식을 통해 다음을 해결하십시오. 문자열의 목록을 감안할 때, 두 개의 문자열의 길이와 일치하는 경우정수를 키로 사용하고 값으로 나열하는지도를 만드는 람다 식

Key=Integer(string.length) 
value=List 

은 문자열의 이러한 모든 일치하는 길이의 목록을 작성지도를 만들 수 있습니다.

스트림 내에서 일치하는 모든 문자열 길이에 대한 목록을 만드는 방법에 대한 단서가 없습니다 !! 나는 다음과 같은 방법을 시도했다. 그것은 나에게 명백한 duplicate Key의 예외를 준다. 문제의 설명에 따라 반면, 그것이 있어야, 코드가 Map<Integer, String>로 맵을 정의했다고, BTW,

Map<Integer, List<String>> map = 
    listString.stream().collect(Collectors.groupingBy(String::length)); 

참고 :

private static void changeToMap(List<String> listString) 
{ 
    Map<Integer, String> map=listString.stream().collect(Collectors.toMap(x->x.toString().length(),x->x)); 
    System.out.println(map);   
} 

답변

6

이것은 groupingBy 컬렉터가 할 수 있도록 설계 있었는지 정확하게 위의 스 니펫이이를 정의하므로 Map<Integer, List<String>>으로 정의됩니다.

+0

안녕하세요. 이것은 내가 seraching하고 있었던 것이다!! :) 네, 목록에 구현할 수 있기 때문에 요구 사항에 따른지도의 선언이 모두 일치하지 않으므로 그렇게 선언해야합니다 !! – Nilotpal