java8常用特性:
1.烂大街
shopInfoDTOList.stream().map(s -> toShopAuthorizationDTO(s, map)).collect(Collectors.toList());
shopInfoDTOList.stream().distinct().map(s -> toShopAuthorizationDTO(s, map)).collect(Collectors.toList());
2.分组、不分组
moduleCompanyLicenseDOList.stream().collect(Collectors.toMap(a -> a.getModuleId(), a -> a.getId(), (k1, k2) -> k1));
moduleCompanyLicenseDOList.stream().collect(Collectors.groupingBy(ModuleCompanyLicenseDO::getModuleId));
3.过滤
shopAuthorizationDTOList.stream().filter(s -> filterConditions(s, query)).collect(Collectors.toList());
4.分页
.stream().skip(query.getLimitNum() * (query.getCurrentPage() - 1)).limit(query.getLimitNum()).collect(Collectors.toList());
5.排序
Comparator<Object> compare = Collator.getInstance(Locale.CHINA);
.sort((o1, o2) -> ((Collator) compare).compare(o1.getSimpleName(), o2.getSimpleName()));
自写排序器排序
outUserInfoDailyDataAnalyzeBOList = (List<OutUserInfoDailyDataAnalyzeBO>) outUserInfoDailyDataAnalyzeBOList.stream().sorted(OutUserDailyDataUtil.getComparator(query)).skip(query.getPageSize() * (query.getPageNo() -1)).limit(query.getPageSize()).collect(Collectors.toList());
public static Comparator getComparator(OutUserDailyDataQuery query) {
// 粉丝倒叙 然后质量分倒叙
Comparator comparator = Comparator.comparing(OutUserInfoDailyDataAnalyzeBO::getFansNum, Comparator.reverseOrder()).thenComparing(OutUserInfoDailyDataAnalyzeBO::getQualityScore,Comparator.reverseOrder());
}
6.求和
.stream.reduce((i, j) -> i + j).get();
或
.stream.reduce((i, j) -> i + j).ifPresent(System.out::println);
7. Map排序
正排:map.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getValue)).collect(LinkedHashMap::new,(m,e) -> m.put(e.getKey(),e.getValue()),LinkedHashMap::putAll);
倒排:map.entrySet().stream().sorted(Comparator.comparingInt((Map.Entry<String,Integer> m) -> m.getValue()).reversed()).collect(LinkedHashMap::new,(m,e) -> m.put(e.getKey(),e.getValue()),LinkedHashMap::putAll);
8.示例:
public static PageInfo getPageInfo(ShopAuthorizationQueryRequest query, List<ShopAuthorizationDTO> shopAuthorizationDTOList) {
PageInfo pageInfo = new PageInfo<>();
// 根据查询条件过滤数据
shopAuthorizationDTOList = shopAuthorizationDTOList.stream().filter(s -> filterConditions(s, query)).collect(Collectors.toList());
// 排序
Comparator<Object> compare = Collator.getInstance(Locale.CHINA);
shopAuthorizationDTOList.sort((o1, o2) -> ((Collator) compare).compare(o1.getSimpleName(), o2.getSimpleName()));
pageInfo.setTotal(shopAuthorizationDTOList.size());
shopAuthorizationDTOList = shopAuthorizationDTOList.stream().skip(query.getLimitNum() * (query.getCurrentPage() - 1)).limit(query.getLimitNum()).collect(Collectors.toList());
pageInfo.setList(shopAuthorizationDTOList);
return pageInfo;
}
/**
* 过滤条件
* @param s
* @param query
* @return
*/
private static boolean filterConditions(ShopAuthorizationDTO s,ShopAuthorizationQueryRequest query){
boolean flag =true;
if(query.getShopId() != null){
flag &= query.getShopId().equals(s.getShopId());
}
if (query.getPlatFormType() != null) {
flag &= query.getPlatFormType().equals(s.getPlatFormType());
}
if(query.getAuthorizationType() != null){
flag &= query.getAuthorizationType().equals(s.getAuthorizationType());
}
return flag;
}