1.
#2.
2
正确答案选b
3
是错误的,Lambda表达式能描述无参数的函数
Lambda 表达式是 Java 8 中引入的一种函数式编程特性,它可以用于描述一个函数式接口的实例。函数式接口是指只包含一个抽象方法的接口,Lambda 表达式可以替代这个抽象方法的实现,从而创建一个函数式接口的实例。
Lambda 表达式可以描述不同类型的函数,包括有参数和无参数的函数。对于无参数的函数,Lambda 表达式的语法非常简单,只需要将参数列表留空即可。例如,下面的代码演示了如何使用 Lambda 表达式描述一个无参数的函数:
Runnable r = () -> { System.out.println("Hello, world!"); };
在这个例子中,Lambda 表达式 () -> { System.out.println(“Hello, world!”); } 描述了一个无参数的函数,它的函数体是一个输出语句。这个 Lambda 表达式被赋值给一个 Runnable 接口的实例 r,从而创建了一个 Runnable 对象。当调用 r.run() 方法时,就会执行 Lambda 表达式中的代码,输出 “Hello, world!”。
需要注意的是,Lambda 表达式只能用于描述函数式接口的实例,而无法直接创建一个函数。如果需要在 Lambda 表达式中使用变量或者执行更复杂的逻辑,那么就需要将 Lambda 表达式封装到一个函数式接口中,从而创建一个函数式接口的实例。
4
Java 中的 Stream 是一种用于表示和操作集合数据的容器。它提供了一种函数式编程的方式,可以对集合中的元素进行过滤、映射、排序、聚合等操作,从而让代码更加简洁、清晰和易于维护。
Stream 是 JDK 8 中引入的特性,它可以用来表示一个元素序列,并支持串行和并行的操作。在使用 Stream 时,首先需要将集合转换为一个 Stream,然后对 Stream 进行一系列的中间操作,最后进行终止操作来获取结果。
Stream 的中间操作可以包括过滤、映射、排序、去重等操作。这些操作都是惰性求值的,也就是说,它们不会立即执行,而是在终止操作执行时才会触发计算。终止操作可以包括聚合、收集、归约等操作,它们会触发计算并返回最终结果。
需要注意的是,Stream 是一种临时的数据结构,它不会改变原有的集合数据,而是通过中间操作和终止操作来生成新的数据。因此,在使用 Stream 时需要注意,不要修改原有的集合数据。
总之,Stream 是一种用于操作集合数据的容器,它提供了一种函数式编程的方式,可以让代码更加简洁、清晰和易于维护。
5
返回的依旧是stream类型
6
返回的是集合,只不过将符合条件的元素都放置于新的集合中
7 Optional
Optional 类型并不是一种集合类型,它是 Java 8 中引入的一种用于表示可能为空的值的容器类型。它可以用来避免空指针异常,并且可以让代码更加健壮和易于理解。
Optional 类型只能包含一个对象,如果对象存在,则调用 get() 方法可以获取该对象,否则将抛出 NoSuchElementException 异常。如果需要向 Optional 中添加多个同类型的对象,则需要使用集合类型,例如 List、Set 等。
Optional 类型的主要作用是表示一个可能为空的值,它可以用于避免空指针异常。