List<String> names = Arrays.asList("张三", "李四", "王老五", "李三", "刘老四", "王小二", "张四", "张五六七");
String maxLenStartWithZ = names.stream()
.filter(name -> name.startsWith("张"))
.mapToInt(String::length)
.max()
.toString();
System.out.println(maxLenStartWithZ);
int i1 = names.stream()
.filter(name -> name.startsWith("张"))
.mapToInt(String::length)
.max().orElse(0);
int i2 = names.stream()
.filter(name -> name.startsWith("张1"))
.mapToInt(String::length)
.max().getAsInt();
getAsInt()方法没有验证非空,所以如果filter之后没有值的话,会直接抛异常。所以可以使用上面的方式orElse()方法,给定一个值,如果空的话返回给定的值。