JAVA 8 StreamAPI 和 lambda表达式

JAVA 8 手把手教你学会写lambda表达式

JAVA 8新特性——StreamAPI(一)

JAVA 8新特性之 StreamApi Stream流的中间操作(二)

JAVA 8 StreamAPI 和 lambda表达式 总结(四)–stream的一些聚合操作

JAVA 8 lambda使用总结-结合实例介绍

JAVA 8 :: 用法 (JDK8 双冒号用法

/**
 * list -> map
 */
List<BetUserMaxVipPojo> betUserMaxVipList
//将list数据变成以userid为key的map
Map<BigInteger,BetUserMaxVipPojo> betUserMaxVipMap = betUserMaxVipList.stream().collect(Collectors.toMap((key->key.getUserid()),(value->value)));
//将list数据进行以userid进行分组,可以为userid
Map<BigInteger, List<BetUserMaxVipPojo>> betUserMaxVipMap = betUserMaxVipList.stream().collect(Collectors.groupingBy(BetUserMaxVipPojo::getUserid));

//获取list集合中某个字段组成新的list
List<BetRewardDayRankVo> rankList;
List<BigInteger> userIdList = rankList.stream().map(BetRewardDayRankVo::getUserID).collect(Collectors.toList());

//过滤list中的某些数据
List<ShopGoods> cheapGoods;
List<ShopGoods> cheapGood = cheapGoods.stream().filter(x -> !x.getId().equals(yesterdayGoods.getId())).collect(Collectors.toList());


List<PayPayMentListVo> pays;
//通过实践分组
Map<LocalDate, List<PayPayMentListVo>> timeMap = pays.stream().collect(Collectors.groupingBy(PayPayMentListVo::getTime));
//定义过滤规则
Predicate<PayPayMentListVo> success = x->x.getAlipaystate() == 2 || x.getWxpaystate() == 2;
for (Map.Entry en: timeMap.entrySet()) {
	List<PayPayMentListVo> values = (List<PayPayMentListVo>) en.getValue();
	//求满足规则的applymoney数据汇总
	values.stream().filter(success).mapToLong(PayPayMentListVo::getApplymoney).sum();
}

//过滤
APActivityDict apActivityDict;
apActivityDict = listDictInfo.stream().filter(x -> ActivityDictEnum.appHomeTrailerConfig.getValue().equals(x.getId())).findFirst().orElse(null);

//resultList集合根据ApActivityRewardRecord 中的rewarddate字段倒叙排
resultList = resultList.stream().sorted(Comparator.comparing(ApActivityRewardRecord :: getRewarddate).reversed()).collect(Collectors.toList());
Collections.sort(gameList, Comparator.comparing(ApActivityYearGameVo::getCreatetime));
//先根据data倒叙,在根据createtime顺序
rankList=rankList.stream().sorted(Comparator.comparing(ActivityRank::getData,Comparator.reverseOrder()).thenComparing(ActivityRank::getCreatetime)).collect(Collectors.toList());


/**
 *求和 0为初始值
 *采用reduce进行数值操作会涉及到基本数值类型和引用数值类型之间的装箱、拆箱操作,因此效率较低。 
 *当流操作为纯数值操作时,使用数值流能获得较高的效率。
 */
//自定义求和
List<Person> list;
int age = list.stream().reduce(0, (person1,person2)->person1.getAge()+person2.getAge());
//用对象自带方法求和
List<Integer> list;
int age = list.stream().reduce(0, Integer::sum);
int age = list.stream().reduce(Integer::sum);

//数值计算
int sum = countStepCon.stream().mapToInt(ApActivityHallowmasCooperStep::getTasktype).sum();
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页