gpt4 book ai didi

Java 8 具有 Stream API、Lambda 以及与 java 7 的简洁代码比较

转载 作者:行者123 更新时间:2023-12-01 19:38:51 25 4
gpt4 key购买 nike

我正在学习 Java 8 新功能,遇到一种情况,我无法说服面试官 Java 8 如何提供比旧版本 java 更简洁的代码。我提供了一个功能接口(interface)和比较器接口(interface)的示例,该类不必实现接口(interface)。使用 lambda 表达式,我们可以直接提供方法的实现,如下面的代码示例 1 所示。我已经向他解释了如何使用 java8 减少行数。

我还提供了 Comparator 接口(interface)的示例,我们可以直接使用 lambda 表达式实现 Comparator 接口(interface)。但他说,如果我们用某个类实现 Comparator 接口(interface),那么我可以在使用 Lambda 表达式时重用它,每当我要进行排序时,我都必须一次又一次地编写逻辑。所以我不知道如何解释 java 8 如何提供简洁的代码,因为根据他的描述,他是对的。

对于Stream API我们也可以对元素进行排序,那么为什么我们要使用Java8的Stream API进行排序,而集合有Collections.sort方法。如果我使用 Stream API 进行排序,那么我已经收集了新列表中的所有元素,而使用 Collections.sort 将对现有列表进行排序,那么我们为什么要使用 Stream API?请参阅示例 3。

所以我无法理解Java8如何提供简洁的代码以及stream API有何帮助或者为什么我应该使用Stream API。

我在谷歌上进行了一些搜索,但没有找到满意的答案。

//Exaple 1
//Traditional Way
interface SampleInterface {
public void sampleMethod();
}

public class SampleClass implements SampleInterface {
@Override
public void sampleMethod() {
// Implementation Logic
}
}

//Using Lambda expression and Functional Interface
@FunctionalInterface
interface SampleInterface {
public void sampleMethod();
}

public class SampleClass {
public static void main(String[] args) {
SampleInterface sf = () -> {System.out.println("Implementation of interface method");};
}
}


//Example 2
Comparator<Student> c = (s1, s2) -> {return (s1.age < s2.age ? -1 : (s1.age > s2.age) ? 1 : 0 );};


//Example 3
//Using Stream API
List<Employee> newList = empList.stream().sorted((v1, v2) -> (v2.id < v1.id) ? -1 : (v2.id > v1.id) ? 1 : 0).collect(Collectors.toList());

//Using comparator
Collections.sort(list, comparator);

最佳答案

But He said if we are implementing Comparator interface with some class then I can reuse it while using Lambda expression I have to write logic again and again whenever I what to do sorting.

您只需像第一个示例中那样将 lambda 捕获到变量中,然后在您想要的任何地方使用它。这个论点在 7 个抵制的开发者中很常见,首先告诉他你不必为单个实例构建一个类;其次,比较器代码出现在正确的位置,因此读取集合的排序方式不需要搜索排序类的定义;第三,编译器在使用 lambda 时最擅长优化...

For Stream API we can also sort elements, So why should we use Stream API of Java8 for sorting

排序正是流 POV 中不太好的功能之一。它只是为了不破坏流:构造一个流,收集,排序,再次流等等

关于Java 8 具有 Stream API、Lambda 以及与 java 7 的简洁代码比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56185354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com