我可以使用 java 中的收集器从文档列表中查找具有键最大值的文档吗
Can I use collectors in java to find a document with max value of a key from a list of documents
我在 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);
代码 returns 是正确的值,但我想知道是否有另一种方法使用收集器以单行或更短的方式解决此问题。
无需收集到 HashMap:
Document docWithMaxNameId =
documents.stream()
.max(Comparator.comparing(doc -> doc.getString(nameId))
.get();
如前所述,无需收集到 HashMap
。
您可能会感到惊讶,但已经有一个 Collections.max
进行了比较:
Document doc = Collections.max(documents, Comparator.comparing(d -> d.getString(nameId));
我在 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);
代码 returns 是正确的值,但我想知道是否有另一种方法使用收集器以单行或更短的方式解决此问题。
无需收集到 HashMap:
Document docWithMaxNameId =
documents.stream()
.max(Comparator.comparing(doc -> doc.getString(nameId))
.get();
如前所述,无需收集到 HashMap
。
您可能会感到惊讶,但已经有一个 Collections.max
进行了比较:
Document doc = Collections.max(documents, Comparator.comparing(d -> d.getString(nameId));