欢迎访问宙启技术站
智能推送

Java中的Stream API:使用方法

发布时间:2023-05-20 17:08:27

Java中的Stream API是Java 8引入的一个新功能,它可以将集合或数组中的数据进行流式处理,提供了一种更简洁、更易读、更灵活的方式来操作数据。本文将介绍Java中Stream API的使用方法。

1.创建Stream

在使用Stream API之前,需要先创建一个Stream对象。有四种创建Stream对象的方式:

(1)从集合创建:

List<String> list = new ArrayList<>();

Stream<String> stream = list.stream();

(2)从数组创建:

String[] array = new String[]{"a", "b", "c"};

Stream<String> stream = Arrays.stream(array);

(3)使用Stream.of()方法创建:

Stream<String> stream = Stream.of("a", "b", "c");

(4)创建无限流:

Stream<Integer> stream = Stream.iterate(0, n -> n + 2); //从0开始,每次加2。

2.中间操作

中间操作是指对Stream对象进行一系列的操作,输出的结果还是一个Stream对象,可以继续进行操作。中间操作常用的方法有:

(1)filter方法:过滤掉不符合要求的元素。

List<String> list = Arrays.asList("apple", "banana", "pear");

Stream<String> stream = list.stream().filter(s -> s.length() > 5);

(2)map方法:对元素进行变换,输出的是一个新的Stream对象。

List<String> list = Arrays.asList("apple", "banana", "pear");

Stream<Integer> stream = list.stream().map(String::length);

(3)limit方法:限制流中元素的数量。

List<String> list = Arrays.asList("apple", "banana", "pear");

Stream<String> stream = list.stream().limit(2);

(4)sorted方法:对流中元素进行排序。

List<String> list = Arrays.asList("apple", "banana", "pear");

Stream<String> stream = list.stream().sorted();

(5)distinct方法:去除流中重复的元素。

List<String> list = Arrays.asList("apple", "banana", "pear", "apple", "pear");

Stream<String> stream = list.stream().distinct();

(6)flatMap方法:将Stream对象中的每一个元素Stream转换成一个新的Stream对象。

List<List<String>> lists = Arrays.asList(Arrays.asList("apple", "banana"), Arrays.asList("pear", "peach"));

Stream<String> stream = lists.stream().flatMap(Collection::stream);

3.终止操作

终止操作是指最后一次操作,一旦执行了终止操作,就不能再进行任何操作。常用的终止操作有:

(1)forEach方法:对每个元素执行一些操作。

List<String> list = Arrays.asList("apple", "banana", "pear");

list.stream().forEach(System.out::println);

(2)count方法:获取元素的数量。

List<String> list = Arrays.asList("apple", "banana", "pear");

long count = list.stream().count();

(3)reduce方法:将流中所有元素归约成一个元素。

List<Integer> list = Arrays.asList(1, 2, 3, 4);

Optional<Integer> optional = list.stream().reduce(Integer::sum);

(4)findFirst方法:获取流中 个元素。

List<String> list = Arrays.asList("apple", "banana", "pear");

Optional<String> optional = list.stream().findFirst();

以上只是Stream API的基本使用方式,它还有很多其他的方法和用法,可以根据需要进行查看和学习。总的来说,Stream API是Java 8中一个非常强大和方便的工具,可以帮助我们更高效地处理数据。