import java.util.*;
import java.util.stream.Collectors;
/**
* stream流的应用
*/
public class StreamUtils {
public static List<Map<String, Object>> list;
static {
list = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
map.put("age", "10");
map.put("name", "幸");
list.add(map);
map = new HashMap<>();
map.put("age", "12");
map.put("name", "磊");
list.add(map);
}
public static void main(String[] args) {
//Stream_forEach();//遍历流中的数据
//Stream_filter();//过滤流中的数据
//Stream_map();//用于数据类型转换/获取List集合中指定内容
//Stream_count();//用于统计Stream流中元素的个数
//Stream_limit();//截取流中的元素
Stream_sum();//求和
}
/**
* 截取集合中的元素
*/
private static void Stream_limit() {
List<Map<String, Object>> collect = list.stream().limit(2).collect(Collectors.toList());//截取两个集合中的数据
collect.forEach(map -> System.out.println(map.get("name")));
}
/**
* 过滤+统计个数
*/
private static void Stream_count() {
long count = list.stream().filter(map -> Integer.valueOf(map.get("age").toString()) > 10).count();
System.out.println(count);
}
/**
* 过滤获取符合条件的集合
*/
private static void Stream_filter() {
List<Map<String, Object>> list = StreamUtils.list.stream().
filter(map -> Integer.valueOf(map.get("age").toString()) > 10).collect(Collectors.toList());
for (Map<String, Object> map : list) {
System.out.println(map.get("age"));
}
}
/**
* 用于数据类型转换/获取List集合中指定内容
*/
private static void Stream_map() {
List<Integer> ageList = list.stream().map(map -> Integer.valueOf(map.get("age").toString())).collect(Collectors.toList());
for (Integer age : ageList) {
System.out.println(age);
}
}
/**
* 遍历流中的数据
*/
private static void Stream_forEach() {
list.stream().forEach(map -> System.out.println(map.get("name")));
}
/**
* 求和、最大值、最小值、平均值
*/
private static void Stream_sum() {
double sum = list.stream().mapToDouble(map -> Double.valueOf(map.get("age").toString())).sum();
double max = list.stream().mapToDouble(map -> Double.valueOf(map.get("age").toString())).max().getAsDouble();
double min = list.stream().mapToDouble(map -> Double.valueOf(map.get("age").toString())).min().getAsDouble();
double avg = list.stream().mapToDouble(map -> Double.valueOf(map.get("age").toString())).average().getAsDouble();
System.out.println(sum);
System.out.println(max);
System.out.println(min);
System.out.println(avg);
Integer sumInt = list.stream().mapToInt(map -> Integer.valueOf(map.get("age").toString())).sum();
Integer maxInt = list.stream().mapToInt(map -> Integer.valueOf(map.get("age").toString())).max().getAsInt();
Integer minInt = list.stream().mapToInt(map -> Integer.valueOf(map.get("age").toString())).min().getAsInt();
double avgDouble = list.stream().mapToInt(map -> Integer.valueOf(map.get("age").toString())).average().getAsDouble();
System.out.println(sumInt);
System.out.println(maxInt);
System.out.println(minInt);
System.out.println(avgDouble);
}
}
List集合中的stream流方法应用总结