• 【JAVA进阶篇教学】第三篇:JDK8中Stream API使用


    博主打算从0-1讲解下java进阶篇教学,今天教学第三篇:JDK8中Stream API使用。 

    Java 8 中的 Stream API 提供了一种便捷、高效的方式来处理集合数据,它支持函数式编程风格的操作,包括过滤、映射、归约等。Stream API 可以大大简化集合的处理代码,使得代码更加清晰和易于理解。下面我将列举 Stream API 中的几个常用方法,并给出相应的代码案例。 

    目录

    一、常用的 Stream API 方法 

    1.filter()

     2.map()

    3.collect()

    4.forEach()

    5.count()

    6.flatMap() 

    7.sorted()

    8.distinct()

    9.reduce()

    10.findFirst()

    二、注意事项

    1.list中元素自动拼接成字符串


    一、常用的 Stream API 方法 

    1.filter()

    filter()方法作用:用于过滤集合中的元素,只保留满足条件的元素。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 过滤出以 "J" 开头的编程语言
    3. List filteredLanguages = languages.stream()
    4. .filter(language -> language.startsWith("J"))
    5. .collect(Collectors.toList());
    6. System.out.println(filteredLanguages); // 输出:[Java, JavaScript]
    [Java, JavaScript]

     2.map()

    map()方法 作用:用于对集合中的每个元素进行映射转换。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 将所有编程语言转换为大写形式
    3. List upperCaseLanguages = languages.stream()
    4. .map(String::toUpperCase)
    5. .collect(Collectors.toList());
    6. System.out.println(upperCaseLanguages); // 输出:[JAVA, PYTHON, C++, JAVASCRIPT]
    [JAVA, PYTHON, C++, JAVASCRIPT]

    3.collect()

    collect()方法作用:将 Stream 元素转换为其他形式,比如 List、Set、Map 等。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 将 Stream 转换为 List
    3. List languageList = languages.stream()
    4. .collect(Collectors.toList());

    4.forEach()

    forEach()方法作用:对集合中的每个元素执行指定操作。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 打印每个编程语言
    3. languages.forEach(System.out::println);

    5.count()

    count()方法作用:返回 Stream 中的元素个数。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 统计编程语言的数量
    3. long count = languages.stream().count();
    4. System.out.println("Number of languages: " + count); // 输出:Number of languages: 4

    这里其实你直接用languages.size(); 也可以获取到数量。

    6.flatMap() 

    flatMap()方法作用:将多个 Stream 合并成一个 Stream。

    示例代码:

    1. List> nestedList = Arrays.asList(
    2. Arrays.asList("Java", "Python"),
    3. Arrays.asList("C++", "JavaScript")
    4. );
    5. // 使用 flatMap 将多个 List 合并为一个 Stream
    6. List flatList = nestedList.stream()
    7. .flatMap(Collection::stream)
    8. .collect(Collectors.toList());
    9. System.out.println(flatList); // 输出:[Java, Python, C++, JavaScript]

    7.sorted()

    sorted()方法作用:对 Stream 中的元素进行排序。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 对编程语言按字母顺序进行排序
    3. List sortedLanguages = languages.stream()
    4. .sorted()
    5. .collect(Collectors.toList());
    6. System.out.println(sortedLanguages); // 输出:[C++, Java, JavaScript, Python]

    8.distinct()

    distinct()方法作用:去除 Stream 中重复的元素。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "Java", "C++", "Python");
    2. // 去除重复的编程语言
    3. List distinctLanguages = languages.stream()
    4. .distinct()
    5. .collect(Collectors.toList());
    6. System.out.println(distinctLanguages); // 输出:[Java, Python, C++]

    9.reduce()

    reduce()方法作用:对 Stream 中的元素进行归约操作,得到一个结果。

    示例代码:

    1. List numbers = Arrays.asList(1, 2, 3, 4, 5);
    2. // 计算所有数字的和
    3. int sum = numbers.stream()
    4. .reduce(0, Integer::sum);
    5. System.out.println("Sum of numbers: " + sum); // 输出:Sum of numbers: 15

    10.findFirst()

    findFirst()方法作用:返回 Stream 中的第一个元素(如果存在)。

    示例代码:

    1. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    2. // 找到第一个编程语言
    3. Optional firstLanguage = languages.stream().findFirst();
    4. System.out.println("First language: " + firstLanguage.orElse("None")); // 输出:First language: Java

    二、注意事项

    • Stream 是一种一次性的数据结构,一旦使用,就不能重复使用。
    • Stream 操作默认是惰性的,只有终端操作才会触发实际的计算。

    1.list中元素自动拼接成字符串

    1. import java.util.Arrays;
    2. import java.util.List;
    3. import java.util.stream.Collectors;
    4. public class JoiningExample {
    5. public static void main(String[] args) {
    6. List languages = Arrays.asList("Java", "Python", "C++", "JavaScript");
    7. // 使用 Collectors.joining() 将元素拼接成字符串
    8. String result = languages.stream()
    9. .collect(Collectors.joining(", "));
    10. System.out.println(result); // 输出:Java, Python, C++, JavaScript
    11. }
    12. }

    以上是关于 Java 8 中 Stream API 的常用方法及其作用的说明和示例代码。Stream API 提供了一种更加优雅和高效的方式来处理集合数据,能够极大地简化代码,并提高代码的可读性和可维护性。

  • 相关阅读:
    Kafka之Producer网络传输
    SpringBoot进阶教程(七十五)数据脱敏
    QT学习_05_各种对话框
    UML和模式应用~迭代、进化和敏捷
    数据仓库【指标体系】
    Python Flask flasgger api文档[python/flask/flasgger]
    分布式系统的知识点-架构设计
    再改RNNs,试用While循环不展开特性
    自动驾驶领域中的CMS系统应用探讨
    gitlab环境准备
  • 原文地址:https://blog.csdn.net/qq_23126581/article/details/137912521