您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页使用JAVA8filter对List多条件模糊筛选、单个参数多个值过滤、多个参数联合排序

使用JAVA8filter对List多条件模糊筛选、单个参数多个值过滤、多个参数联合排序

来源:暴趣科技网
使⽤JAVA8filter对List多条件模糊筛选、单个参数多个值过滤、

多个参数联合排序

对于从缓存中获取的list集合如果根据条件进⾏模糊查询呢?条件根据indexName字段筛选需要的值1、造数据

List shardsList = new ArrayList<>();ShardsInfoDto shardsInfoDto = new ShardsInfoDto();shardsInfoDto.setIndexName(\"chenming20210416\");shardsInfoDto.setDocs(3);shardsInfoDto.setStore(2.0);

ShardsInfoDto shardsInfoDto1 = new ShardsInfoDto();shardsInfoDto1.setIndexName(\"asdasd\");shardsInfoDto1.setDocs(1);shardsInfoDto1.setStore(4.1);

ShardsInfoDto shardsInfoDto2 = new ShardsInfoDto();shardsInfoDto2.setIndexName(\"chenmingasdhkask\");shardsInfoDto2.setDocs(1);shardsInfoDto2.setStore(5.1);

ShardsInfoDto shardsInfoDto3 = new ShardsInfoDto();shardsInfoDto3.setIndexName(\"asdfghjkl\");shardsInfoDto3.setDocs(4);shardsInfoDto3.setStore(3.1);

ShardsInfoDto shardsInfoDto4 = new ShardsInfoDto();shardsInfoDto4.setIndexName(\"lkjhgfds\");shardsInfoDto4.setDocs(2);shardsInfoDto4.setStore(1.1);

ShardsInfoDto shardsInfoDto5 = new ShardsInfoDto();shardsInfoDto5.setIndexName(\"erghjcvghui\");shardsInfoDto5.setDocs(2);shardsInfoDto5.setStore(1.2);

ShardsInfoDto shardsInfoDto6 = new ShardsInfoDto();shardsList.add(shardsInfoDto);shardsList.add(shardsInfoDto1);shardsList.add(shardsInfoDto3);shardsList.add(shardsInfoDto4);shardsList.add(shardsInfoDto2);shardsList.add(shardsInfoDto5);shardsList.add(shardsInfoDto6);2、模糊查询:

String indexName = \"asd\";

shardsList = shardsList.stream().filter(ShardsInfoDto ->

ShardsInfoDto.getIndexName()!=null&&ShardsInfoDto.getIndexName().indexOf(indexName) > -1).collect(Collectors.toList());shardsList.stream().forEach(ShardsInfoDto -> {

System.out.println(ShardsInfoDto.getIndexName());});

ShardsInfoDto.getIndexName()!=null 判断防⽌空指针异常输出结果:

3、单个参数多个值过滤

List shardStateList = new ArrayList<>();shardStateList.add(\"a\");shardStateList.add(\"b\");shardStateList.add(\"c\");

shardsList = shardsList.stream().filter(ShardsInfoDto ->

shardStateList.contains(ShardsInfoDto.getShardStates())).collect(Collectors.toList());4、多个参数联合排序:String docsFlag = \"asc\";String storeFlag = \"desc\";//排序

Comparator doc = null;if(\"asc\".equals(docsFlag)){//docs升序

doc = Comparator.nullsFirst(Comparator.comparing(ShardsInfoDto::getDocs, Comparator.nullsFirst(Integer::compareTo)));}else if(\"desc\".equals(docsFlag)){//docs降序

doc = Comparator.nullsFirst(Comparator.comparing(ShardsInfoDto::getDocs, Comparator.nullsFirst(Integer::compareTo)).reversed());}

Comparator store = null;if(\"asc\".equals(storeFlag)){//store升序

store = Comparator.nullsFirst(Comparator.comparing(ShardsInfoDto::getStore, Comparator.nullsFirst(Double::compareTo)));}else if(\"desc\".equals(storeFlag)){//store降序

store = Comparator.nullsFirst(Comparator.comparing(ShardsInfoDto::getStore, Comparator.nullsFirst(Double::compareTo)).reversed());}

// 联合排序

Comparator finalComparator = doc.thenComparing(store);shardsList.sort(finalComparator);for (ShardsInfoDto dto:shardsList) {

System.out.println(\"doc:\"+dto.getDocs()+\}

Comparator.nullsFirst()防⽌参数为空导致空指针异常!结果:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务