Java8新特性】Java8新特性相关面试题

本问题对应的项目链接:高频题回答模版训练

PS:这个一般也不会有什么连环炮,面试官就想看看你是否了解Java8的一些新特性,因为在工作中,这些新特性还用的挺多的。

1、关于Java8的新特性,你了解多少?可以讲几个吗?(PS:讲3~4个即可,Lambda 和 stream 必须包含)

2、Lambda 表达式解决了什么问题?Lambda 真正的好处是什么?

共以下 2 个回答

  • 秊 永久会员 2023年7月10日 下午5:03

    1、关于Java8的新特性,你了解多少?可以讲几个吗?(PS:讲3~4个即可,Lambda 和 stream 必须包含)

    下面说几个比较了解的:

    第一个是 Lambda 表达式,它可以直接作为参数传递给方法或存储在变量中,可以在任何需要函数式接口的地方使用。并且以前使用匿名内部类的地方现在都可以用 Lambda 表达式来化简。

    第二个是 Stream API,不同于集合关注的是对数据的存储,它关注的是对数据的运算处理,比如可以对集合进行过滤,映射,排序等等,使用起来也十分简洁。

    第三个是新增的 Optional 类,它主要是为了解决 Java 中的空指针而生的。它可以包装一个对象,该对象可能为空,通过一系列的方法操作该对象,而无需显示地进行 null 检查。

    还有方法引用,通过一对冒号 ‘ :: ‘ 操作符来表示。对于静态方法引用,可以用 ‘类名::静态方法名’ 表示,对于示例方法引用,可以用 ‘类名::方法名’ 表示等等。

    2、Lambda 表达式解决了什么问题?Lambda 真正的好处是什么?

    Lambda 主要解决的是代码的冗余问题。Java 8 之前,为了传递功能到方法中,必须使用匿名内部类,导致代码非常冗余且难以阅读,使用 lambda 表达式可以以一种非常简洁的方式替代它,同时也为 Java 引入了函数式编程的能力。

    Lambda 的好处在于它能以更紧凑的方式表示代码逻辑,写出来的代码简洁清晰,可读性好。结合 Stream API 可以简洁高效的对集合进行操作。

    3、demo

    public class LambdaStreamExample {
        public static void main(String[] args) {
            List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    
            // 使用Lambda和Stream API过滤和映射集合
            List<Integer> result = numbers.stream()
                    .filter(n -> n % 2 != 0) // 过滤掉偶数
                    .map(n -> n * 2) // 将剩下的数字加倍
                    .toList();
    
            // 输出结果
            System.out.println(result); // 输出: [2, 6, 10, 14, 18]
        }
    }
    
    0 赞同 0 条回复
  • 。 永久会员 2023年7月5日 下午2:01

    1.lambad表达式,比如:PriorityQueue pq = new PriorityQueue<>((a, b) -> a – b) ; stream()api,比如:List result = nums.stream().sorted().collect(Collectors.toList()); 时间api,比如localDate和localTime;引入了接口的默认方法和静态方法;有了Nashorn引擎,可以运行JavaScript;
    2.可以把原来十几行代码压缩到一行代码,使代码更简洁易懂

    0 赞同 0 条回复

# 回答此问题

后才能回答