在 Java 8 计算其值后返回映射键的方法

Tis*_*ash 5 java java-8 java-stream

如果地图的大小为 1,则应返回其键。如果它的大小大于 1,则迭代 map 中的值,并且应该返回该键的键,该键对于某个属性具有最大值。下面是我的代码片段。我想用 Java 8 流 api 实现相同的目标。

public  MessageType getOrgReversalTargetMti(Map<MessageType, List<TVO>> map) {
    MessageType targetMessageType = null;
    if (1 == map.size()) {
        targetMessageType = map.keySet().iterator().next();
    }
    else {
        long maxNumber = 0;
        for (final MessageType messageType : map.keySet()) {
            List<TVO> list = map.get(messageType);
            long trace = list.get(0).getTrace();
            if (trace > maxNumber) {
                maxNumber = trace;
                targetMessageType = messageType;
            }
        }
    }
    return targetMessageType;
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 8

您可以使用Streamwithmax()终端操作:

public  MessageType getOrgReversalTargetMti(Map<MessageType, List<TVO>> map) {
    return map.entrySet()
              .stream()
              .max(Comparator.comparing(e -> e.getValue().get(0).getTrace()))
              .map(Map.Entry::getKey())
              .orElse(null);
}
Run Code Online (Sandbox Code Playgroud)