Могу ли я использовать коллекторы в Java, чтобы найти документ с максимальным значением ключа из списка документов - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть ArrayList документов на Java.Я хочу документ, который имеет максимальное значение ключа, скажем 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);

Код возвращает правильныйзначение, но мне интересно, есть ли другой способ использовать коллекторы для решения этой проблемы в одну строку или более коротким способом.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Как уже упоминалось, нет необходимости собирать до HashMap.

Вы можете быть удивлены, но уже есть Collections.max, берущий компаратор:

Document doc = Collections.max(documents, Comparator.comparing(d -> d.getString(nameId));
0 голосов
/ 26 декабря 2018

Нет необходимости собирать в HashMap:

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