2016-06-25 3 views
1

나는 각자의 코드와 친구 목록을 저장하는 클래스 Person을 가지고있다. 나는 가장 많은 친구를 가진 사람의 코드를 얻으려고 노력하고 있지만 알아낼 수는 없습니다. getFriendsgetCodePerson 클래스에서 제공됩니다.자바 스트림에서 문자열 반환

스트림에서 문자열을 반환하려면 어떻게해야합니까?

HashMap<String,Person> persons = new HashMap<>(); 

public String personWithLargestNumberOfFriends() { 
    return persons.values().stream() 
     .sorted(comparing(p -> ((Person)p).getFriends().size()).reversed()) 
     .limit(1) 
     .forEach(p -> ((Person)p).getCode()); 
} 
+0

'forEach'의 존재를 잊자 마자 스트림으로 무엇을하고 싶은지에 관계없이 솔루션이 발생합니다 ... – Holger

답변

6

정렬 대신 max()을 사용하십시오.

return persons.values().stream() 
    .max(comparing(Person::getFriends, comparingInt(List::size))) 
    .map(Person::getCode) 
    .orElse("empty code"); 

는 다른 게터가 orElseThrow()처럼, 사용자의 요구에 맞게 할 경우 Optional 클래스가 볼을 참조하십시오.

관련 문제