JDK8 stream常见用法

LIST去重

常规数组等

对象LIST

根据faid属性分组
List jjhzTlYaVoList = new ArrayList<>();
jjhzTlYaVoList =jjhzTlYaVoList1.stream().collect(collectingAndThen(
toCollection(
() -> new TreeSet<>(Comparator.comparing(JjhzTlYaVo::getFaid))
),
ArrayList::new
));

生成新对象

取每个属性

Set subJgIdSet = allSubSysZcjgList.stream().map(SysZcjg::getId).collect(Collectors.toSet());

同时去重

List jgbidList = cyglYbjgList.stream().map(o -> o.getId()).distinct().collect(Collectors.toList());

取多属性

注意方式,忽略细节
List jjhzTlYaVoList = new ArrayList<>();
List qyjxKhfaJbxxList = new ArrayList<>();
qyjxKhfaJbxxList=jjhzTlYaVoList.stream().map(k -> {
QyjxKhfaJbxx qyjxKhfaJbxx = new QyjxKhfaJbxx();
qyjxKhfaJbxx.setId(k.getFaid());
qyjxKhfaJbxx.setFamc(k.getFamc());
return qyjxKhfaJbxx;
}).collect(Collectors.toList());

LIST 转MAP

KEY重复 (k1, k2) -> k1)

Map<String, QyjxJxkhFakKhxm> qyjxJxkhFakKhxmMap = qyjxJxkhFakKhxmList.stream().collect(Collectors.toMap(x -> x.getZbbm(), x -> x, (k1, k2) -> k1));

LIST过滤stream().filter

返回list

List tmpYbjgHcxqList = cyglYbjgHcxqList.stream().filter(o -> o.getJgbid().equals(cyglYbjg.getId())).collect(Collectors.toList());

返回唯一

QyjxZbfl exsitQyjxZbfl = qyjxZbflList.stream().filter(o -> {
if (fldj == 1) {
return flmc.equals(o.getFlmc());
} else {
return fldj == o.getFldj() && flmc.equals(o.getFlmc()) && parentFlid.equals(o.getFid());
}
}).findFirst().orElse(null);

List分组 Collectors.groupingBy

Map<String, List> jjhzTlYaVoMapFaidChildren = jjhzTlYaVoList.stream().collect(Collectors.groupingBy(k -> k.getFaid() + “”));

List 求和 .reduce

BigDecimal jggfALl = khdxlist.stream().map(JjhzTlYaVo::getGzzdl).reduce(BigDecimal.ZERO, BigDecimal::add);

List排序 sorted

默认

1、 cyglHcpdtjXmList = cyglHcpdtjXmList.stream().sorted(Comparator.comparing(QyjxCyglHcpdtjXm::getXmsx)).collect(Collectors.toList());
2、 this.fields = this.fields.stream().sorted(Comparator.comparing(objects -> ((Excel) objects[1]).sort())).collect(Collectors.toList());

自定义排序方法

jZbVoList = tjZbVoList.stream().sorted(new Comparator() {
@Override
public int compare(QyjxFakZbszTjZbVo o1, QyjxFakZbszTjZbVo o2) {
return Double.compare(o2.getTjScore(), o1.getTjScore());
}
}).collect(Collectors.toList());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值