findFirst 表示匹配到第一个满足条件的值就返回,demo 如下:
// 找到第一个叫小美同学的 ID
@Test
public void testFindFirst(){
Long id = students.stream()
.filter(s->StringUtils.equals(s.getName(),"小美"))
// 同学中有两个叫小美的,这里匹配到第一个就返回
.findFirst()
.get().getId();
log.info("testFindFirst 小美同学的 ID {}",id);
// 防止空指针
Long id2 = students.stream()
.filter(s->StringUtils.equals(s.getName(),"小天"))
.findFirst()
// orElse 表示如果 findFirst 返回 null 的话,就返回 orElse 里的内容
.orElse(new StudentDTO()).getId();
log.info("testFindFirst 小天同学的 ID {}",id2);
Optional<StudentDTO> student= students.stream()
.filter(s->StringUtils.equals(s.getName(),"小天"))
.findFirst();
// isPresent 为 true 的话,表示 value != null,即 student.get() != null
if(student.isPresent()){
return;
}
log.info("testFindFirst 找不到名为小天的同学");
}
运行结果如下: