Java8-Stream相关操作

优先考虑自定义排序

https://blog.csdn.net/apsilk/article/details/90700985
https://blog.csdn.net/alan_liuyue/article/details/110185139
https://blog.csdn.net/qq_48721706/article/details/122510280

List<User> collect = users.stream()
        .sorted(Comparator.comparing(User::getAge,(s1,s2) -> {return s2.compareTo(s1);}))
        .collect(Collectors.toList());

List<User> collect1 = users.stream()
        .sorted(Comparator.comparing(User::getAge).reversed())
        .collect(Collectors.toList());
        
 List<User> collect1 = users.stream()      
        .sorted( Comparator.comparing(ColumnOfHistogramInfo3::getValue)
        .reversed()
        .thenComparing(ColumnOfHistogramInfo3::getName) )

//进行排序,如果num为null则排在最后,不会抛出空指针异常

public static void main(String[] args) {
    ArrayList<SysMenu> sysMenus = new ArrayList<>();
    SysMenu sysMenu0 = new SysMenu();
    sysMenu0.setId("5");
    sysMenu0.setNum(5);

    SysMenu sysMenu = new SysMenu();
    sysMenu.setId("1");
    sysMenu.setNum(1);

    SysMenu sysMenu2 = new SysMenu();
    sysMenu2.setId("2");
    sysMenus.add(sysMenu0);
    sysMenus.add(sysMenu);
    sysMenus.add(sysMenu2);
    List<SysMenu> collect = sysMenus.stream()
            .sorted(Comparator.comparing(SysMenu::getNum, Comparator.nullsLast(Integer::compareTo)))
            .collect(Collectors.toList());
    collect.stream().forEach(e -> System.out.println(JSON.toJSONString(e)));

}

分组

//根据资方ID进行分组
Map<String, List<TOmsBiPjBase>> collect = bases.stream()
.collect(Collectors.groupingBy(TOmsBiPjBase::getCapitalId));

求和

//当日在贷金额总和
BigDecimal reduce = tOmsBiPjBases.stream().map(TOmsBiPjBase::getLoanAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);

根据日期分组 并对日期进行排序

Map<String, List<TOmsBiCapitalLoan>> collect = tOmsBiCapitalLoans.stream()
.collect(Collectors.groupingBy(TOmsBiCapitalLoan::getBatchNo,TreeMap::new,Collectors.toList()));

分组后对key进行排序

collect.keySet().stream().sorted()

求和并筛选不为null的对象

BigDecimal receiveAmtTotal = tBiLoanGatherMons.stream().map(y -> y.getReceiveAmt())
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);

stream配合Optional

Map<String, List<TOmsBiConfPara>> biConfParaMap = Optional.ofNullable(biConfParaList).orElse(new ArrayList<>())
        .stream().collect(Collectors.groupingBy(TOmsBiConfPara::getTypeCode));

求和添加判断条件

BigDecimal onWayServCostAmtSum = onWayServCostList.stream().map(ServiceCostVo::getServiceAmount)
.filter(bd->null!=bd).reduce((bd1, bd2) -> bd1.add(bd2)).orElse(BigDecimal.ZERO);

将nulls始终放在最后

order by outtable.payServiceDt desc nulls last

--nulls始终放在最前
 nulls first

去重

List<DataRes> results =
        resultList.stream()
                .collect(
                        Collectors.collectingAndThen(
                                Collectors.toCollection(
                                        () -> new TreeSet<>(Comparator.comparing(o -> o.getCompName() + ";" + o.getBusiness()))
                               ), ArrayList::new));

2次分组

stream().collect(Collectors
.groupingBy(ApplyInvoiceRespVo::getRzId, Collectors.groupingBy(ApplyInvoiceRespVo::getCostType)));

sort排序

CACHE_MAP = YwManager.getBeanMap().entrySet().stream()
        .sorted(Comparator.comparing(e -> e.getKey().code))
        .collect(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll);

.collect(Collectors.toMap ( ) );

Map<String, BaseArea> baseAreaMap = this.baseAreaService
				.findBaseAreaList(baseAreaCon).stream()
				.collect(Collectors.toMap(BaseArea::getZoneCode, a -> a, (k1, k2) -> k1));
    
第一个参数BaseArea::getZoneCode表示选择BaseArea的getZoneCode作为map的key值;
第二个参数a -> a表示选择将原来的对象作为map的value值;
第三个参数(k1, k2) -> k1中,如果k1与k2的key值相同,选择k1作为那个key所对应的value值

Comparator排序

List<EarlyWarnResultTypeEnum> sortResultTypeEnumList = resultTypeEnumList.stream()
        .sorted( Comparator.comparingInt( e -> Integer.valueOf(e.getCode()) ) )
        .collect(Collectors.toList());

获取最小值

//四个额度取一个最小的
List<BigDecimal> ls = new ArrayList<>();
ls.add(ccbYdLimit.getPlatLimit());
ls.add(ccbYdLimit.getCompLimit());
ls.add(ccbYdLimit.getCoreLimit());
ls.add(finalAvailableLimit);
finalAvailableLimit = ls.stream().min(BigDecimal::compareTo).orElse(BigDecimal.ZERO);;

将list转化为string并且中间添加,号

StringBuilder stringBuilder = new StringBuilder();
ArrayList<String> strings = new ArrayList<>();
strings.add("存在");
strings.add("卑诗欣");
strings.add("不敌");
for (String string : strings) {
    stringBuilder.append(string+",");
}
stringBuilder.deleteCharAt(stringBuilder.length()-1);
System.out.println(stringBuilder.toString());


String collect = strings.stream().collect(Collectors.joining(","));
System.out.println(collect);

List转Map

ArrayList<TOmsReturnCode> compBelongRespVos = new ArrayList<>();
TOmsReturnCode code1 = new TOmsReturnCode();
code1.setCaptialCode("1");
code1.setCaptialName("张三");

TOmsReturnCode code2 = new TOmsReturnCode();
code2.setCaptialCode("2");
code2.setCaptialName("李四");

TOmsReturnCode code3 = new TOmsReturnCode();
code3.setCaptialCode("3");
code3.setCaptialName("王五");
compBelongRespVos.add(code1);
compBelongRespVos.add(code2);
compBelongRespVos.add(code3);
Map<String, String> collect = compBelongRespVos.stream().collect(Collectors.toMap(TOmsReturnCode::getCaptialCode, TOmsReturnCode::getCaptialName));

System.out.println(collect);
System.out.println(collect.get("1"));
System.out.println(collect.get("2"));
System.out.println(collect.get("3"));

.stream().noneMatch

boolean anyMatch(Predicate<? super T> predicate)
只要有一个条件满足即返回true

boolean allMatch(Predicate<? super T> predicate)
必须全部都满足才会返回true

boolean noneMatch(Predicate<? super T> predicate)
全都不满足才会返回true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zcy_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值