使用Java的Stream API处理集合数据 - 函数式编程的实用案例
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提供了许多强大的方法,可以大大简化集合操作并提高效率。在实际开发中,我们可以根据具体需求灵活运用,提高代码质量和效率。
