getAsInt()的NoSuchElementException

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()方法,给定一个值,如果空的话返回给定的值。