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

使用Java的Stream API处理集合数据 - 函数式编程的实用案例

发布时间:2023-05-23 15:22:39

Java的Stream API是在Java 8中引入的一个强大的功能,能够对集合数据进行函数式编程,提供了许多有用的方法来处理集合。本文将介绍Stream API的基本用法,并给出一些实用案例。

一、Stream API的基本用法

1.创建Stream对象

可以通过集合的stream()方法或Arrays类的stream()方法创建Stream对象,例如:

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

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

int[] arr = {1,2,3,4,5};

IntStream intStream = Arrays.stream(arr);

2.中间操作

可以使用Stream API提供的方法进行中间操作,如:filter()、map()、distinct()、sorted()、limit()、skip()、peek()等。

3.终端操作

最终需要对Stream对象执行终端操作来获取结果,例如:forEach()、count()、collect()、reduce()、min()、max()、anyMatch()等。

二、实用案例

1.过滤集合中的空字符串

List<String> list = Arrays.asList("Hello", "", "World", "", "Java");

List<String> result = list.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList());

2.计算集合中的元素之和

int[] arr = {1,2,3,4,5};

int sum = Arrays.stream(arr).sum();

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

int sum = list.stream().mapToInt(Integer::intValue).sum();

3.对集合中的元素进行排序

List<String> list = Arrays.asList("Hello", "World", "Java");

List<String> result = list.stream().sorted().collect(Collectors.toList());

4.获取集合中元素的最小值和最大值

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

int min = list.stream().min(Integer::compareTo).get();

int max = list.stream().max(Integer::compareTo).get();

5.利用Stream生成随机数

Random random = new Random();

Stream<Integer> stream = Stream.generate(random::nextInt).limit(10);

总结

Stream API提供了许多强大的方法,可以大大简化集合操作并提高效率。在实际开发中,我们可以根据具体需求灵活运用,提高代码质量和效率。