java - 我可以使用java中的收集器从文档列表中查找具有最大键值的文档吗

标签 java collections max comparator

我有一个 Java 文档的ArrayList。 我想要具有键最大值的文档,例如 nameId。 我可以使用收集器以尽可能短的方式找到它吗?

我的代码工作正常,但我正在寻找更好的方法来做到这一点。

//ArrayList<Document> documents
//above is the list of documents i have
HashMap<String, Document> map = new HashMap<>();
documents.forEach(doc -> map.put(doc.getString(nameId), doc));
String maxNameId = Collections.max(map.keySet());
Document docWithMaxNameId = map.get(maxNameId);

代码返回正确的值,但我想知道是否有另一种方法使用收集器以单行或更短的方式解决此问题。

最佳答案

无需收集到 HashMap:

Document docWithMaxNameId =
    documents.stream()
        .max(Comparator.comparing(doc -> doc.getString(nameId))
        .get();

关于java - 我可以使用java中的收集器从文档列表中查找具有最大键值的文档吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932093/

相关文章:

java - 如何插入代码使用尽可能多的 CPU 资源?

java - 我如何结合两个 Set Inside HashMap java 的值

c# - 集合的一个字段上的模式匹配

MySQL如何找到表的最大连接字段数?

javascript - 根据图表数据设置图表最大值

java - 如何判断队列大小是否大于最大整数?

java - 查看索引是否为负数

java - ArrayList 添加空指针

java - 对象关系设计

java - 如果使用Java 8 Streams列表为空,则返回默认列表?