1List<map>正序
mapDataList.stream().sorted((a, b) ->a.get("age") - b.get("age")).collect(Collectors.toList());
2 List<map>倒序
mapDataList.stream().sorted((a, b) ->b.get("age") - a.get("age")).collect(Collectors.toList());
3 list 转 Map
//转map:id为key,apple对象为value
Map<Integer, Apple> appleMap = appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1));
//单对单
Map<Long, BigDecimal> map = list.stream().collect(Collectors.toMap(SkuHotNews::getId, SkuHotNews::getBuId, (k1, k2)
4 list字段拼接
String userIds =lst.stream().map(o->o.getString("userid")).collect(Collectors.joining(","));
String userStr = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
5 检查list集合中是否存在某个值
boolean b = list.stream().filter(m -> m.getName().equals("张三")).findAny().isPresent();
boolean b = list.stream().anyMatch(s -> s.getBuName().equals("张三33"));
6 获取不重复的list集合中的个数
//基本数据类型
List<Integer> list = Lists.newArrayList(1, 2, 1, 3);
long count = list.stream().distinct().count();
//对象
long count = list.stream().map(Student::getName).distinct().count();
7.list元素过滤
//filter里为true的留下,false的过滤掉
List<SkuHotNews> collect = list.stream().filter(s -> s.getBuName().equals("张三")).collect(Collectors.toList());
8 分组
List<CheckGoodsMx> checkGoodsList; //不为空的数据List
//返回Map<依据实体类中某个属性分组的类型, List<实体类>>
// groupingBy(CheckGoodsMx::getDrcode)-groupingBy(实体类::getDrcode)
Map<String, List<CheckGoodsMx>> drcodeMap =checkGoodsList.stream().collect( Collectors.groupingBy(CheckGoodsMx::getDrcode));
9 求和、最大值、最小值、平均值
//求和
long sum = list.stream().mapToLong(SkuHotNews::getId).sum();
//最大值
long max = list.stream().mapToLong(SkuHotNews::getId).max().getAsLong();
//最小值
long min = list.stream().mapToLong(SkuHotNews::getId).min().getAsLong();
//平均值(没有指定几位小数,可以转成bigdecimal处理小数位数)
double avg = list.stream().mapToLong(SkuHotNews::getId).average().getAsDouble();
//一次获得:和、最大值、最小值、平均值
IntSummaryStatistics stats = ins.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
//bigdecimal 方式
private static final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点
//求和
BigDecimal add = list.stream().map(SkuHotNews::getBuId).reduce(BigDecimal.ZERO, BigDecimal::add);
String addStr = df.format(add);//保留两位小数并转成string
//最大值
BigDecimal max = list.stream().max((u1, u2) -> u1.getBuId().compareTo(u2.getBuId())).get().getBuId();
String maxStr = df.format(max);//保留两位小数并转成string
//最小值
BigDecimal min = list.stream().min((u1, u2) -> u1.getBuId().compareTo(u2.getBuId())).get().getBuId();
String minStr = df.format(min);//保留两位小数并转成string
//平均值
BigDecimal avg = list.stream().map(SkuHotNews::getBuId).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(list.size()));
String avgStr = df.format(avg);//保留两位小数并转成string
10 排序
//升序
List<SkuHotNews> collect = list.stream().sorted(Comparator.comparing(SkuHotNews::getBuId)).collect(Collectors.toList());
//降序
List<SkuHotNews> collect = list.stream().sorted(Comparator.comparing(SkuHotNews::getBuId).reversed()).collect(Collectors.toList());
//多条件排序
List<SkuHotNews> collect = list.stream().sorted(Comparator.comparing(SkuHotNews::getBuId).thenComparing(SkuHotNews::getId)).collect(Collectors.toList());
11 数组转集合
String[] mailArray = emails.split(",");
List<String> receiveMailList = Stream.of(mailArray).collect(Collectors.toList());
12 集合转数组
String[] strings = list.stream().toArray(String[]::new);
ListparentList =parentsSort.stream().map(o-> o.getParentId()).collect(Collectors.toList());