나는 Test라는 클래스가 있습니다. 이 클래스에는 int 값을 반환하는 getNumber라는 메서드가 있습니다.지도에 스트림을 사용하여 최대 값 가져 오기
public class Test{
.
.
.
.
public int getNumber(){
return number;
}
}
또한 키가 Long이고 값이 Test 개체 인 HashMap이 있습니다.
Map<Long, Test> map = new HashMap<Long, Test>();
스트림 선 코드를 사용하여 최대 getNumber를 갖는 키와 getNumber를 인쇄하려고합니다. 내 질문에 내가 최대 크기의 키를 어떻게 반환 할 수있다 그러나
나는 줄
final Comparator<Test> comp = (p1, p2) -> Integer.compare(p1.getNumber(), p2.getNumber());
map.entrySet().stream().map(m -> m.getValue())
.max(comp).ifPresent(d -> System.out.println(d.getNumber()));
아래를 통해 최대 수를 인쇄 할 수 있습니까? 스트림을 사용하여 한 라운드로 할 수 있습니까?
그것은 매력처럼 작동합니다. 고마워요. –
비싼'.sorted (...) .findFirst()'로 바꾸는 이유가 없습니다. 당신은 여전히 OP의 코드 에서처럼'max'를 사용할 수 있습니다. 단 하나의 트릭은'map' 단계를 수행하지 않는 것입니다 :'map.entrySet() .stream() .max (Map.Entry.comparingByValue (Comparator.comparingInt (Test :: getNumber))) .get()' – Holger
@Holger 다시, 틀렸어, 편집 했어 – Eugene