如何从 Java 8 中的流中收集自定义类对象?

MrF*_*man 3 java java-8 java-stream

我有一个Map<Flashcard, FlashcardStats> flashcards. Flashcard 类包含两个字段:字符串术语和字符串定义。当我必须从抽认卡中找到特定的抽认卡时,我该如何通过 Java 8 Streams 来完成?如何收集 Flashcard 对象或仅具有术语的定义字段?

例如:

private static String getWrongAnswerMessage(Map<Flashcard, FlashcardStats> flashcards, String term, String answer) {

Flashcard flashcard = flashcards.keySet().stream().filter(o -> o.getTerm().equals(term)).collect() //what now
Run Code Online (Sandbox Code Playgroud)

vis*_*hnu 5

Assuming on one maching result

Optional<String> term = flashcards.keySet()
                  .stream()
                  .filter(o->o.getTerm().equals(term))
                  .map(Flashcard::getTerm)
                  .findFirst();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢您,在您的解决方案中它应该是可选的&lt;String&gt;但它有效:) (2认同)