简化你的代码,提高生产力:这10个Lambda表达式必须掌握

简介: Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景。

pexels-gabriela-palai-397096

前言

  Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景,例如列表操作、函数组合、条件筛选等。通过学习这些Lambda表达式,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。

1. 使用Lambda表达式进行集合遍历

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
for (String fruit : list) {
   
   
    System.out.println(fruit);
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(fruit -> System.out.println(fruit));

2. 使用Lambda表达式进行排序

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, new Comparator<String>() {
   
   
    public int compare(String s1, String s2) {
   
   
        return s1.compareTo(s2);
    }
});

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3. 使用Lambda表达式进行过滤

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = new ArrayList<String>();
for (String fruit : list) {
   
   
    if (fruit.startsWith("a")) {
   
   
        filteredList.add(fruit);
    }
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).collect(Collectors.toList());

4. 使用Lambda表达式进行映射

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<Integer> lengths = new ArrayList<Integer>();
for (String fruit : list) {
   
   
    lengths.add(fruit.length());
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<Integer> lengths = list.stream().map(fruit -> fruit.length())
.collect(Collectors.toList());

5. 使用Lambda表达式进行归约

未使用Lambda表达式:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = 0;
for (int i : list) {
   
   
    sum += i;
}

使用Lambda表达式:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, (a, b) -> a + b);

6. 使用Lambda表达式进行分组

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Map<Integer, List<String>> grouped = new HashMap<Integer, List<String>>();
for (String fruit : list) {
   
   
    int length = fruit.length();
    if (!grouped.containsKey(length)) {
   
   
        grouped.put(length, new ArrayList<String>());
    }
    grouped.get(length).add(fruit);
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Map<Integer, List<String>> grouped = list.stream().collect(Collectors.groupingBy(fruit -> fruit.length()));

7. 使用Lambda表达式进行函数式接口的实现

未使用Lambda表达式:

public interface MyInterface {
   
   
    public void doSomething(String input);
}

MyInterface myObject = new MyInterface() {
   
   
    public void doSomething(String input) {
   
   
        System.out.println(input);
    }
};
myObject.doSomething("Hello World");

使用Lambda表达式:

MyInterface myObject = input -> System.out.println(input);
myObject.doSomething("Hello World");

8. 使用Lambda表达式进行线程的创建

未使用Lambda表达式:

Thread thread = new Thread(new Runnable() {
   
   
    public void run() {
   
   
        System.out.println("Thread is running.");
    }
});
thread.start();

使用Lambda表达式:

Thread thread = new Thread(() -> System.out.println("Thread is running."));
thread.start();

9. 使用Lambda表达式进行Optional的操作

未使用Lambda表达式:

String str = "Hello World";
if (str != null) {
   
   
    System.out.println(str.toUpperCase());
}

使用Lambda表达式:

Optional<String> str = Optional.ofNullable("Hello World");
str.map(String::toUpperCase).ifPresent(System.out::println);

10. 使用Lambda表达式进行Stream的流水线操作

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = new ArrayList<String>();
for (String fruit : list) {
   
   
    if (fruit.startsWith("a")) {
   
   
        filteredList.add(fruit.toUpperCase());
    }
}
Collections.sort(filteredList);

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

相关文章
|
6月前
|
开发框架 .NET 编译器
C# 10.0中Lambda表达式的改进:更简洁、更灵活的代码编写体验
【1月更文挑战第21天】随着C#语言的不断发展,Lambda表达式作为一种简洁、高效的函数式编程工具,在C# 10.0中迎来了重要的改进。本文将详细探讨C# 10.0中Lambda表达式的新特性,包括参数类型的推断增强、自然类型的Lambda参数以及Lambda表达式的属性改进等。这些改进不仅简化了Lambda表达式的编写过程,还提升了代码的可读性和灵活性,为开发者带来了更优质的编程体验。
|
3月前
|
运维 数据可视化 搜索推荐
什么是零代码?零代码与低代码有什么联系与区别?
这篇文章阐述了零代码和低代码开发的概念、优势、区别,以及它们如何服务于不同用户群体,并通过APaaS平台促进快速开发和部署应用程序。
|
6月前
|
Java API 容器
Lambda与Stream✨让代码简洁高效的七大原则
Lambda与Stream✨让代码简洁高效的七大原则
|
6月前
|
设计模式 IDE 测试技术
提升 C#编程效率的技巧与方法
【4月更文挑战第20天】提升C#编程效率的关键技巧包括:选择合适的IDE(如Visual Studio)、掌握基础语法、规划良好代码结构、使用代码生成工具、复用代码、利用库和框架、定期重构、应用设计模式、避免过度设计、进行代码审查、自动化测试、学习新技术、养成良好编程习惯、定期备份代码及参与技术社区。通过这些方法,开发者能提高代码质量和开发效率。
89 5
|
6月前
|
编译器 程序员 C++
C++从入门到精通:3.1模板编程——提高代码的复用性和灵活性
C++从入门到精通:3.1模板编程——提高代码的复用性和灵活性
|
Java 编译器 索引
3.4 函数式接口与Lambda表达式的实际应用:编写更灵活和通用的代码
3.4 函数式接口与Lambda表达式的实际应用:编写更灵活和通用的代码
45 0
|
11月前
|
SQL Java 程序员
如何使用lambda表达式提升开发效率
如何使用lambda表达式提升开发效率
42 0
|
运维 数据可视化 搜索推荐
零代码、低代码、全代码的区别
如果您留意过这两年IT行业的新词汇,一定会注意到零代码、低代码这几个新事物。此前,阿里云智能总裁、达摩院院长张建锋在会上表示:未来的软件开发一定是碎片化的,2021年的潮流就是低代码开发,低代码开发将是2021年的行业关键词。从这句话中,我们不难发现,随着低代码、无代码在2021开年的火爆程度,俨然有逐渐成为新风口的趋势。对此,为了帮助大家更快速的了解低代码、无代码、全代码,我特地为大家整理了他们之间的区别,供大家参考学习,希望对大家有所帮助!
3461 0
零代码、低代码、全代码的区别
|
Java 开发者
5.1 Lambda表达式在框架和库中的应用:使用Lambda表达式简化GUI编程
5.1 Lambda表达式在框架和库中的应用:使用Lambda表达式简化GUI编程
64 0
|
程序员 测试技术
《重构2》第十章-简化条件逻辑
《重构2》第十章-简化条件逻辑
340 0
下一篇
无影云桌面