详解Java 8新特性Stream的应用案例
Java 8引入了新的流(Stream)API,简化了数据处理和操作。以下是几个Stream应用的案例:
- 数组排序:
使用Arrays.sort()
方法,但是提供一个实现公平比较的Comparator。
import java.util.Arrays;
import java.util.Comparator;
public class ArraySort {
public static void main(String[] args) {
Integer[] array = {5, 3, 9, 1};
Arrays.sort(array, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2; // 或者使用等价的正负号逻辑操作
}
}));
System.out.println("Sorted array: " + Arrays.toString(array));
}
}
- 过滤特定元素:
使用filter()
方法,根据条件(例如年龄大于30)过滤出符合条件的元素。
import java.util.ArrayList;
import java.util.List;
public class FilterExample {
public static void main(String[] args) {
// 创建一个包含不同年龄元素的列表
List<Integer> ages = new ArrayList<>();
ages.add(25);
ages.add(35);
ages.add(45);
ages.add(55);
// 使用filter()方法过滤出年龄大于30的元素
List<Integer> filteredAges = ages.stream()
.filter(age -> age > 30))
.collect(Collectors.toList()));
System.out.println("Filtered ages: " + filteredAges);
}
}
- 聚合统计:
使用map()
、collect()
和各种聚合函数(如sum()
,average()
,count()
等)进行数据的计数、求和、平均等操作。
import java.util.HashMap;
import java.util.Map;
public class AggregationExample {
public static void main(String[] args) {
// 创建一个示例映射,键为元素类型,值为元素列表
Map<String, List<Integer>> agesByType = new HashMap<>();
agesByType.put("Adult", Arrays.asList(35, 45)));
agesByType.put("Child", Arrays.asList(10, 15)));
// 使用collect()方法和Map的聚合操作,统计每个类型元素的数量
Map<String, Integer> countsByType = agesByType.values().stream()
.collect(Collectors.toMap(List::size), List::get)));
System.out.println("Counts by type: " + countsByType));
}
}
以上是Java 8 Stream API的一些常见应用案例,通过这些操作可以更高效地处理数据。
还没有评论,来说两句吧...