Java Stream API 操纵完全攻略:让你的代码越发杰出_怪人怪事

Java Stream API 操纵完全攻略:让你的代码越发杰出

怪人怪事 2023-05-04 14:30www.bnfh.cn怪人怪事

Java Stream API 操作完全攻略让你的代码更加出色 (一)

前言

  Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。本文将为您介绍 Java Stream 操作的所有方面,包括 filter、map、distinct、sorted 等操作,让您的代码行云流水,更加优雅。

  1. filter()根据指定的 Predicate 保留符合条件的元素。
  2. map()根据指定的 Function 映射每个元素,生成一个新的 Stream。
  3. flatMap()将每个元素映射为一个 Stream,然后将这些 Stream 连接成一个 Stream。
  4. distinct()返回一个去重后的 Stream。
  5. sorted()对 Stream 进行排序。
  6. peek()对每个元素执行指定的操作,但并不消费元素。
  7. limit()返回一个截断后的 Stream。
  8. skip()返回一个跳过指定元素后的 Stream。
  9. forEach()对每个元素执行指定的操作。
  10. toArray()将 Stream 转换为数组。

示例

示例 1使用 filter() 方法过滤奇数

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        List evenNumbers = numbers.stream()
                .filter(n -> n % 2 == 0)
                .collect(Collectors.toList());

        System.out.println("Even numbers: " + evenNumbers);
    }
}

输出结果

Even numbers: [2, 4, 6, 8, 10]

示例 2使用 map() 方法将每个字符串转换为大写

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List ords = Arrays.asList("hello", "orld", "java", "stream");

        List capitalizedWords = ords.stream()
                .map(String::toUpperCase)
                .collect(Collectors.toList());

        System.out.println("Capitalized ords: " + capitalizedWords);
    }
}

输出结果

Capitalized ords: [HELLO, WORLD, JAVA, STREAM]

示例 3使用 flatMap() 方法将嵌套的列表展平为一个列表

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List> nestedNumbers = Arrays.asList(
                Arrays.asList(1, 2),
                Arrays.asList(3, 4, 5),
                Arrays.asList(6, 7, 8, 9)
        );

        List flattenedNumbers = nestedNumbers.stream()
                .flatMap(List::stream)
                .collect(Collectors.toList());

        System.out.println("Flattened numbers: " + flattenedNumbers);
    }
}

输出结果

Flattened numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9]

示例 4使用 distinct() 方法去除重复元素

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 2, 1, 4, 5, 4, 3, 6);

        List distinctNumbers = numbers.stream()
                .distinct()
                .collect(Collectors.toList());

        System.out.println("Distinct numbers: " + distinctNumbers);
    }
}

输出结果

Distinct numbers: [1, 2, 3, 4, 5, 6]

示例 5使用 sorted() 方法对 Stream 进行排序

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(5, 3, 8, 2, 9, 1, 7, 4, 6, 10);

        List sortedNumbers = numbers.stream()
                .sorted()
                .collect(Collectors.toList());

        System.out.println("Sorted numbers: " + sortedNumbers);
    }
}

输出结果

Sorted numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

示例 6使用 peek() 方法打印每个元素并统计元素个数

import java.util.Arrays;
import java.util.List;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        int count = numbers.stream()
                .peek(System.out::println)
                .mapToInt(Integer::intValue)
                .sum();

        System.out.println("Total count: " + count);
    }
}

输出结果

1
2
3
4
5
6
7
8
9
10
Total count: 55

示例 7使用 limit() 方法限制结果集大小

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        List limitedNumbers = numbers.stream()
                .limit(5)
                .collect(Collectors.toList());

        System.out.println("Limited numbers: " + limitedNumbers);
    }
}

输出结果

Limited numbers: [1, 2, 3, 4, 5]

示例 8使用 skip() 方法跳过前面的元素

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        List skippedNumbers = numbers.stream()
                .skip(5)
                .collect(Collectors.toList());

        System.out.println("Skipped numbers: " + skippedNumbers);
    }
}

输出结果

Skipped numbers: [6, 7, 8, 9, 10]

示例 9使用 forEach() 方法打印每个元素

import java.util.Arrays;
import java.util.List;

public class Example {
    public static void main(String[] args) {
        List ords = Arrays.asList("hello", "orld", "java", "stream");

        ords.stream()
                .forEach(System.out::println);
    }
}

输出结果

hello
orld
java
stream

示例 10使用 toArray() 方法将 Stream 转换为数组

import java.util.Arrays;
import java.util.List;

public class Example {
    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        Integer[] numberArray = numbers.stream()
                .toArray(Integer[]::ne);

        System.out.println("Number array: " + Arrays.toString(numberArray));
    }
}

输出结果

Number array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

结尾

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

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

Copyright © 2016-2025 www.bnfh.cn 怪异网 版权所有 Power by