1、模糊查询,通过ShardsInfoDto.getIndexName()!=null 判断防止indexName为空报空指针异常
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());
});
2、如果shardsList集合中有null对象,则加入过滤条件Objects::nonNull,这个条件会帮助去除为null的对象
shardsList = shardsList.stream().filter(Objects::nonNull).filter(ShardsInfoDto -> ShardsInfoDto.getIndexName().indexOf(indexName) > -1).collect(Collectors.toList());
3、多个参数联合排序,则加入Comparator.nullsFirst()防止参数为空导致空指针异常!
String docsFlag = "asc";
String storeFlag = "desc";
//排序
Comparator<ShardsInfoDto> 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<ShardsInfoDto> 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<ShardsInfoDto> finalComparator = doc.thenComparing(store);
shardsList.sort(finalComparator);
for (ShardsInfoDto dto:shardsList) {
System.out.println("doc:"+dto.getDocs()+",store:"+dto.getStore());
}