Java函数式接口——Stream API的用法详解
什么是Stream API?
Stream API是Java 8中提供的一个处理集合(Collection)和数组的新方式。它提供了一种简单的流式操作方式,用于处理数据修改、筛选和过滤数据等操作。
Stream API的优势:
1. 可实现并行处理,提升处理效率。
2. 更加简洁、优雅的代码风格。
3. 简化多级数据处理和操作。
4. 支持延迟计算和短路操作。
Stream API的使用方法:
Stream API提供了两种形式的方法链式编程:
1. Intermediate方法:主要实现数据的筛选、投影、过滤等操作。
如 filter(),map(),distinct(),sorted(),limit(),skip()等
2. Terminal方法:主要实现触发数据处理并返回结果的操作。
如forEach(),toArray(),reduce(),collect()等
Stream API的基本应用:
1. 集合的筛选和过滤
Stream API可以使用filter()方法和map()方法进行数据的筛选和过滤,filter()方法返回符合条件的元素组成的集合,map()方法将原集合的元素映射成新集合的元素。
示例代码:
List<String> list = Arrays.asList("apple", "banana", "lemon", "pear", "orange");
List<String> list2 = list.stream()
.filter(s -> s.length() > 5)
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(list2);
结果:[LEMON, ORANGE]
2. 集合的统计和计算
Stream API可以使用count()方法、min()方法、max()方法、sum()方法以及平均值方法average()方法等实现数据的统计和计算。
示例代码:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream().count();
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
Optional<Integer> max = numbers.stream().max(Integer::compareTo);
System.out.println("count:" + count);
System.out.println("sum:" + sum);
System.out.println("max:" + max.get());
结果:
count:5
sum:15
max:5
3. 集合的排序和去重
Stream API可以使用sorted()方法和distinct()方法实现对集合元素的排序和去重操作。
示例代码:
List<Integer> numbers = Arrays.asList(4, 3, 2, 1, 5, 4, 3, 2, 1);
List<Integer> list = numbers.stream()
.sorted()
.distinct()
.collect(Collectors.toList());
System.out.println(list);
结果:[1, 2, 3, 4, 5]
4. 集合的批量操作
Stream API可以使用forEach()方法实现集合的批量操作,对于集合中的每个元素,都可以应用一个特定的操作。
示例代码:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(System.out::println);
结果:
1
2
3
4
5
总结:
Stream API是Java 8提供的一种新方式,它能够以更加优雅和简洁的方式处理集合和数组,实现数据的筛选、过滤、统计、计算、排序、去重等操作,提高代码效率和可读性,是Java 8 中一个重要的新特性。
