Java Stream 使用指南

本文详细介绍了Java8引入的JavaStream,包括创建Stream的方法,如通过集合和数组,以及常用的中间操作如filter、map和sorted,以及终端操作如collect和forEach。

Java Stream 是 Java 8 引入的一个强大的功能,它提供了一种便捷的方式来处理集合和数组的元素。通过使用 Stream,我们可以以一种简洁而高效的方式进行数据操作和转换。本文将详细介绍 Java Stream 的基本概念和常用操作,并提供相应的源代码示例。

  1. 创建 Stream
    在开始使用 Stream 之前,我们首先需要创建一个 Stream 对象。Java 中提供了多种方式来创建 Stream,最常见的方式是通过集合或数组创建。

1.1 通过集合创建 Stream
我们可以使用 Collection 接口的 stream() 方法来创建一个 Stream。下面的示例展示了如何通过 List 创建一个 Stream:

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

public class StreamExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");
        Stream<String> stream = fruits.stream();
        // 在这里可以对 stream 进行各种操作
    }
}

1.2 通过数组创建 Stream
我们可以使用 Arrays 类的 stream() 方法来创建一个 Stream。下面的示例展示了如何通过数组创建一个 Stream:

import java.util.Arrays;
import java.util.stream.Stream;

public class StreamExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        Stream<int[]> stream = Arrays.stream(numbers);
        // 在这里可以对 stream 进行各种操作
    }
}
  1. Stream 的中间操作
    Stream 提供了丰富的中间操作方法,用于对数据进行转换、过滤和排序等操作。下面将介绍几个常用的中间操作方法。

2.1 filter
filter 方法用于根据指定的条件过滤元素。下面的示例展示了如何使用 filter 方法筛选出大于 3 的元素:

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

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> filteredNumbers = numbers.stream()
                .filter(n -> n > 3)
                .collect(Collectors.toList());
        System.out.println(filteredNumbers); // 输出: [4, 5]
    }
}

2.2 map
map 方法用于对元素进行映射操作,将一个元素转换为另一个元素。下面的示例展示了如何使用 map 方法将字符串转换为大写:

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

public class StreamExample {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("hello", "world", "java");
        List<String> upperCaseWords = words.stream()
                .map(String::toUpperCase)
                .collect(Collectors.toList());
        System.out.println(upperCaseWords); // 输出: [HELLO, WORLD, JAVA]
    }
}

2.3 sorted
sorted 方法用于对元素进行排序操作。下面的示例展示了如何使用 sorted 方法对整数列表进行升序排序:

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

public class StreamExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 2, 3, 1, 4);
        List<Integer> sortedNumbers = numbers.stream()
                .sorted()
                .collect(Collectors.toList());
        System.out.println(sortedNumbers); // 输出: [1, 2, 3, 4, 5]
    }
}
  1. Stream 的终端操作
    Stream 的终端操作会触发 Stream 的计算并产生最终的结果。下面将介绍几个常用的终端操作方法。

3.1 collect
collect 方法用于将 Stream 中的元素收集到一个集合或字符串中。下面的示例展示了如何使用 collect 方法将元素收集到一个 List 中:

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

public class StreamExample {
    public static voidmain(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");
        List<String> collectedFruits = fruits.stream()
                .collect(Collectors.toList());
        System.out.println(collectedFruits); // 输出: [apple, banana, orange]
    }
}

3.2 forEach
forEach 方法用于对 Stream 中的每个元素执行指定的操作。下面的示例展示了如何使用 forEach 方法打印出 Stream 中的元素:

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

public class StreamExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");
        fruits.stream()
                .forEach(System.out::println);
        // 输出:
        // apple
        // banana
        // orange
    }
}
  1. 总结
    本文介绍了 Java Stream 的基本概念以及常用的操作方法。通过使用 Stream,我们可以以一种简洁而高效的方式对集合和数组进行处理和转换。希望本文能帮助你更好地理解和使用 Java Stream。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值