深入理解Java中Stream流常用方法及示例 文章标签: #java #python #开发语言 本文详细介绍了Java8中StreamAPI的常用方法,如filter、map、sorted、forEach、reduce、collect、flatMap等,并通过实例展示了它们在处理集合数据时的应用。 一键部署运行 深入理解Java中Stream流常用方法及示例 一、介绍 二、举例说明 1. filter方法 2. map方法 3. sorted方法 4. forEach方法 5. reduce方法 6. collect方法 7. flatMap方法 8. anyMatch和allMatch方法 9. findFirst和findAny方法 10. skip和limit方法 11. distinct方法 一、介绍 Java 8引入的Stream API为处理集合数据提供了一种更为优雅和便捷的方式。Stream流提供了一系列丰富的方法,能够帮助我们轻松地进行数据操作和处理。在本文中,我们将介绍Java Stream流的常见方法,并通过具体的示例来演示它们的用法。 二、举例说明 1. filter方法 filter方法用于过滤流中的元素,只保留满足特定条件的元素。 \`\`\` List names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); List result = names.stream() .filter(name -\> name.startsWith("A")) .collect(Collectors.toList()); System.out.println(result); // 输出:\[Alice\] \`\`\` 2. map方法 map方法用于对流中的每个元素进行映射操作,将元素转换为另一种形式。 \`\`\` List names = Arrays.asList("apple", "banana", "cherry"); List lengths = names.stream() .map(String::length) .collect(Collectors.toList()); System.out.println(lengths); // 输出:\[5, 6, 6\] \`\`\` 3. sorted方法 sorted方法用于对流中的元素进行排序。 \`\`\` List names = Arrays.asList("Charlie", "Alice", "Bob"); List sortedNames = names.stream() .sorted() .collect(Collectors.toList()); System.out.println(sortedNames); // 输出:\[Alice, Bob, Charlie\] \`\`\` 4. forEach方法 forEach方法对流中的每个元素执行指定的操作。 \`\`\` List names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .forEach(System.out::println); \`\`\` 输出: \`\`\` Alice Bob Charlie \`\`\` 5. reduce方法 reduce方法用于将流中的所有元素归约为单个值。 \`\`\` List numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .reduce(0, Integer::sum); System.out.println(sum); // 输出:15 \`\`\` 6. collect方法 collect方法用于将流中的元素收集到集合中。 \`\`\` List names = Arrays.asList("Alice", "Bob", "Charlie"); Set nameSet = names.stream() .collect(Collectors.toSet()); System.out.println(nameSet); // 输出:\[Alice, Bob, Charlie\] \`\`\` 当涉及到Java Stream流的使用时,除了上述常用方法外,还有许多其他有用的方法可以帮助进行更复杂和高效的数据处理。接下来,我们将继续介绍一些常见的Java Stream 流方法,并附上相应的示例代码。 7. flatMap方法 flatMap方法用于将多个流合并 成一个流,常用于处理嵌套结构的数据。 \`\`\` List\> numbers = Arrays.asList( Arrays.asList(1, 2, 3), Arrays.asList(4, 5, 6), Arrays.asList(7, 8, 9) ); List flattenedList = numbers.stream() .flatMap(List::stream) .collect(Collectors.toList()); System.out.println(flattenedList); // 输出:\[1, 2, 3, 4, 5, 6, 7, 8, 9\] \`\`\` 8. anyMatch和allMatch方法 anyMatch方法用于检查流中是否有任意一个元素满足给定条件,而allMatch方法则用于检查流中的所有元素是否都满足给定条件。 \`\`\` List numbers = Arrays.asList(1, 2, 3, 4, 5); boolean anyMatchGreaterThanThree = numbers.stream() .anyMatch(num -\> num \> 3); boolean allMatchLessThanTen = numbers.stream() .allMatch(num -\> num \< 10); System.out.println(anyMatchGreaterThanThree); // 输出:true System.out.println(allMatchLessThanTen); // 输出:true \`\`\` 9. findFirst和findAny方法 findFirst方法用于返回流中的第一个元素,而findAny方法则返回流中的任意一个元素。 \`\`\` List names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); Optional firstMatch = names.stream() .filter(name -\> name.startsWith("C")) .findFirst(); Optional anyMatch = names.stream() .filter(name -\> name.length() == 3) .findAny(); System.out.println(firstMatch.orElse("No match")); // 输出:Charlie System.out.println(anyMatch.orElse("No match")); // 输出:Bob (或者其他任意一个满足条件的元素) \`\`\` skip方法用于跳过流中的前几个元素,而limit方法则用于限制流中元素的数量。 \`\`\` List numbers = Arrays.asList(1, 2, 3, 4, 5); List skipFirstTwo = numbers.stream() .skip(2) .collect(Collectors.toList()); List limitToThree = numbers.stream() .limit(3) .collect(Collectors.toList()); System.out.println(skipFirstTwo); // 输出:\[3, 4, 5\] System.out.println(limitToThree); // 输出:\[1, 2, 3\] \`\`\` 11. distinct方法 distinct方法用于去除流中的重复元素。 \`\`\` List numbers = Arrays.asList(1, 2, 2, 3, 3, 4, 5, 5); List distinctNumbers = numbers.stream() .distinct() .collect(Collectors.toList()); System.out.println(distinctNumbers); // 输出:\[1, 2, 3, 4, 5\] \`\`\` 通过合理地运用以上这些方法,我们可以更加灵活地处理和操作集合数据,从而编写出更为简洁、高效的代码。Java Stream流的强大之处在于其丰富的方法库,能够有效地应对各种数据处理需求,提升开发效率和代码质量。希望本文能帮助您更好地理解和应用Java Stream流。
原创
深入理解Java中Stream流常用方法及示例
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法