Stream的findFirst方法在此流中查找第一个元素作为Optional。 如果流中没有元素,findFirst返回空的Optional。 如果流没有顺序,那么findFirst可以选择任何元素。 如果findFirst选择的元素为null,它将抛出NullPointerException。
上面的方法是不允许传 null 值的, 下面的是可以的,下面的方法传了空值, 它会默认的帮你创建一个空的 Optional 包装类对象。 isPresent()是判断这个包装类是否为空,get()是获取到被包装的对象。isPresent()还可以接受一个Consumer(消费者)参数,如果对象不是空的,就对执行传入的 Lambda 表达式 public boolean isP...
.findFirst() .orElse(str4); 或 publicstaticOptional<String>firstNonNull(String... strings){returnArrays.stream(strings) .filter(Objects::nonNull) .findFirst(); }Strings=firstNonNull(str1, str2, str3).orElse(str4); 2 三元运算符 Strings=str1 !=null? str1 : str2 !=null? str2 : str...
publicstaticOptional<String>firstNonNull(String...strings){returnArrays.stream(strings).filter(Objects::nonNull).findFirst();}Strings=firstNonNull(str1,str2,str3).orElse(str4); 2、三元运算符 Strings=str1!=null?str1:str2!=null?str2:str3!=null?str3:str4; 3、使用 for 循环判断 String[]st...
一连串调用如obj.getA().getB().getC() ,容易出现NPE,且通过下面格式判断的话影响代码可读性,可使用Java 8 中Optional,感兴趣的同学可自行搜索 if (user != null) { Address address = user.getAddress(); if (address != null) { Country country = address.getCountry(); if (country != null) {...
在使用Java Stream API的stream().map().findFirst()链式操作时遇到空指针异常(NullPointerException),通常是由于以下几个原因导致的。下面我将逐一分析这些原因,并提供相应的解决方案。 1. stream本身为空或为null 如果stream对象本身为null,那么在调用map方法时会抛出空指针异常。同样,如果stream是一个空的流(即没...
- noneMatch:判断是否没有元素满足条件。 - findFirst:找到第一个元素。 - findAny:找到任意一个元素。 3. Short-circuiting(短路操作): - anyMatch:在找到满足条件的元素后立即返回。 - allMatch:在找到不满足条件的元素后立即返回。 - noneMatch:在找到满足条件的元素后立即返回。
在开发中,经常要判断集合中是否有指定的值,对于在集合中查询匹配数据,可以用到findFirst、findAny、anyMatch、allMatch和noneMatch这些方法。 一、查找 1. findFirst 如果一个集合数据是有序的,而且你要查找符合条件的第一条数据。 这时用findFirst是比较合适的。
比如 Stream 的 findFirst() 方法获取到流中的第一个元素。如果在从 ArrayList 创建的流上应用该操作,返回的总是第一个元素;如果是从 HashSet 创建的流,则返回的结果是不确定的。对于一个无序的流,可以使用 sorted 操作来排序;对于一个有序的流,可以使用 unordered() 方法来使其无序。Spliterator 所有的...
findFirst()用于找到第一次出现的元素 .isPresent() isPresent()可以判断所找到的值是否是null 举例 if(AList.stream().filter(a ->"小明".equals(a.getUserName())) .findFirst().isPresent()){ List<A>list=AList.stream().filter(a ->"小明".equals(a.getUserName())) .collect(Collectors.toList(...