JAVA8中Stream的⽤法之最⼤、最⼩、平均值、求和、遍历、过滤、排序对集合进⾏遍历
list.stream().forEach(s-> System.out.println(s));
⼀对list集合中的Integer类型元素进⾏操作
1、对List集合中的Integer类型元素进⾏求最⼤,最⼩,平均值。
//Integer类型求和
System.out.println("===========Integer类型求和==================");
Integer sum = list.stream().reduce(Integer::sum).orElse(0);
Integer sum1 = list.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum+","+sum1);
//Integer类型求最⼤值
System.out.println("===========Integer类型求最⼤值==================");
Integer max = list.stream().reduce(Integer::max).orElse(0);
int max1 = list.stream().mapToInt(Integer::intValue).max().getAsInt();
System.out.println(max+","+max1);
//Integer类型求平均值
double average = list.stream().mapToDouble(Integer::intValue).average().getAsDouble();
System.out.println(average);
2、对List集合中的Integer类型元素进过滤。
//list集合过滤(也就是选出符合条件的元素)
List<Integer> filter = list.stream().filter(s -> s >20&& s <40).List());
System.out.println(filter);
3、对List集合中的Integer类型元素进⾏排序
/
/对集合元素进⾏从⼩到⼤排序
List<Integer> sort = list.stream().sorted().List());
sort.stream().forEach(s-> System.out.println(s));
//对集合元素进⾏从⼤到⼩排序
List<Integer> upSort = list.stream().verseOrder()).List());
upSort.stream().forEach(s-> System.out.println(upSort));
⼆、对list集合中的⾃定义类进⾏操作
这⾥我们根据⾃⼰⾃定义的⽤户类来做笔记
1、求集合中⽤户的总年龄
//⽤户年龄总值
int sumAge = list.stream().mapToInt(User::getAge).sum();
2、求集合中⽤户年龄的最⼤值,最⼩值,平均值。
//⽤户年龄最⼤值
int maxAge = list.stream().mapToInt(User::getAge).max().getAsInt();
//⽤户年龄最⼩值
int minAge = list.stream().mapToInt(User::getAge).min().getAsInt();
//⽤户年龄平均值
double averageAge= list.stream().mapToInt(User::getAge).average().getAsDouble();
3、对集合中的⽤户进⾏过滤(也就是筛选)
//根据年龄条件过滤⽤户
List<User> filterAsAge = list.stream().filter(user -> Age()>15&& Age()<15).List());
4、对集合中的⽤户进⾏排序
//根据年龄从⼩到⼤排序
list.sort(Comparatorparing(User::getAge));
list.stream().forEach(s-> System.out.println(s));
//根据年龄从⼤到⼩排序
list.sort(Comparatorparing(User::getAge).reversed());
list.stream().forEach(s-> System.out.println(s));
//对集合元素先根据年龄进⾏从⼤到⼩排序,如果年龄相同,再根据id进⾏从⼤到⼩排序
list.sort(Comparatorparing(User::getAge,((o1, o2)-> o2-o1)).thenComparing(User::getId,((o1, o2)-> o2-o1)));
list.stream().forEach(s-> System.out.println(s));
5、list根据对象某个属性去重
添加⽅法:
import ConcurrentHashMap;
import Function;
import Predicate;
import Collectors;java stream
private static<T> Predicate<T>distinctByKey(Function<?super T, Object> keyExtractor){
Map<Object, Boolean> seen =new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE)==null;
}
使⽤:
facultyRetList = facultyList.stream().filter(distinctByKey(Faculty::getId)).List());