findFirst 表示匹配到第一个满足条件的值就返回,demo 如下:

    1. // 找到第一个叫小美同学的 ID
    2. @Test
    3. public void testFindFirst(){
    4. Long id = students.stream()
    5. .filter(s->StringUtils.equals(s.getName(),"小美"))
    6. // 同学中有两个叫小美的,这里匹配到第一个就返回
    7. .findFirst()
    8. .get().getId();
    9. log.info("testFindFirst 小美同学的 ID {}",id);
    10. // 防止空指针
    11. Long id2 = students.stream()
    12. .filter(s->StringUtils.equals(s.getName(),"小天"))
    13. .findFirst()
    14. // orElse 表示如果 findFirst 返回 null 的话,就返回 orElse 里的内容
    15. .orElse(new StudentDTO()).getId();
    16. log.info("testFindFirst 小天同学的 ID {}",id2);
    17. Optional<StudentDTO> student= students.stream()
    18. .filter(s->StringUtils.equals(s.getName(),"小天"))
    19. .findFirst();
    20. // isPresent 为 true 的话,表示 value != null,即 student.get() != null
    21. if(student.isPresent()){
    22. return;
    23. }
    24. log.info("testFindFirst 找不到名为小天的同学");
    25. }

    运行结果如下:
    image.png