package com.jingdianjichi.tool;
import com.google.common.collect.Lists;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 集合Stream常用操作工具类
* 包含:转新集合,过滤,分组,排序,求和,平均,最大值,最小值,分隔,合并,去重
*
* @author Zee
* @date 2023年5月20日
*/
public class CollStreamUtil {
/**
* 转换成一个新的集合
*
* @param collection 集合
* @param function 表达式
* @param <T> 泛型
* @param <R> 泛型
* @return 新的集合
*/
public static <T, R> List<R> toList(Collection<T> collection, Function<? super T, ? extends R> function) {
return nullDefaultEmpty(collection).stream().map(function).collect(Collectors.toList());
}
/**
* 转换成一个新的集合
*
* @param collection 集合
* @param function 表达式
* @param <T> 泛型
* @param <R> 泛型
* @return 新的集合
*/
public static <T, R> Set<R> toSet(Collection<T> collection, Function<? super T, ? extends R> function) {
return nullDefaultEmpty(collection).stream().map(function).collect(Collectors.toSet());
}
/**
* 集合排序正序
*
* @param list 要排序的集合
* @param keyExtractor 排序字段
* @param <T> 泛型
* @param <U> 泛型
*/
public static <T, U extends Comparable<? super U>> void sortAsc(List<T> list, Function<? super T, ? extends U> keyExtractor) {
((List<T>) nullDefaultEmpty(list)).sort(Comparator.comparing(keyExtractor));
}
/**
* 集合排序倒序
*
* @param list 要排序的集合
* @param keyExtractor 排序字段
* @param <T> 泛型
* @param <U> 泛型
*/
public static <T, U extends Comparable<? super U>> void sortDesc(List<T> list, Function<? super T, ? extends U> keyExtractor) {
((List<T>) nullDefaultEmpty(list)).sort(Comparator.comparing(keyExtractor).reversed());
}
/**
* 集合转换成map
*
* @param collection 集合
* @param keyMapper 转换mapKey
* @param valueMapper 转换mapValue
* @param <T> 源
* @param <K> key
* @param <U> value
* @return map
*/
public static <T, K, U> Map<K, U> toMap(Collection<T> collection, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.toMap(keyMapper, valueMapper, (k1, k2) -> k1));
}
/**
* 集合分组
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K> Map<K, List<T>> groupBy(Collection<T> collection, Function<? super T, K> classifier) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier));
}
/**
* 集合分组统计Map Size
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map Size
*/
public static <T, K> Integer groupBySize(Collection<T> collection, Function<? super T, K> classifier) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier)).size();
}
/**
* 集合分组统计条数
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return map
*/
public static <T, K> Map<K, Long> groupByCounting(Collection<T> collection, Function<? super T, K> classifier) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier, Collectors.counting()));
}
/**
* 集合分组求和Long
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K> Map<K, Long> groupBySummingLong(Collection<T> collection, Function<? super T, K> classifier, ToLongFunction<? super T> mapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier, Collectors.summingLong(mapper)));
}
/**
* 集合分组求和Int
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K> Map<K, Integer> groupBySummingInt(Collection<T> collection, Function<? super T, K> classifier, ToIntFunction<? super T> mapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier, Collectors.summingInt(mapper)));
}
/**
* 集合分组求和double
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K> Map<K, Double> groupBySummingDouble(Collection<T> collection, Function<? super T, K> classifier, ToDoubleFunction<? super T> mapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier, Collectors.summingDouble(mapper)));
}
/**
* 集合分组后转成新list
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K, R> List<R> groupByThenToList(Collection<T> collection, Function<? super T, K> classifier, Function<? super Map.Entry<K, List<T>>, R> mapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier))
.entrySet()
.stream()
.map(mapper)
.collect(Collectors.toList());
}
/**
* 集合分组后转成新Set
*
* @param collection 集合
* @param classifier key
* @param <T> 泛型
* @return Map
*/
public static <T, K, R> Set<R> groupByThenToSet(Collection<T> collection, Function<? super T, K> classifier, Function<? super Map.Entry<K, List<T>>, R> mapper) {
return nullDefaultEmpty(collection).stream().collect(Collectors.groupingBy(classifier))
.entrySet()
.stream()
.map(mapper)
.collect(Collectors.toSet());
}
/**
* 集合过滤返回List
*
* @param collection 源集合
* @param predicate 表达试
* @param <T> 泛型
* @return 过滤后的List
*/
public static <T> List<T> filterList(Collection<T> collection, Predicate<? super T> predicate) {
return nullDefaultEmpty(collection).stream().filter(predicate).collect(Collectors.toList());
}
/**
* 集合过滤返回Set
*
* @param collection 源集合
* @param predicate 表达试
* @param <T> 泛型
* @return 过滤后的Set
*/
public static <T> Set<T> filterSet(Collection<T> collection, Predicate<? super T> predicate) {
return nullDefaultEmpty(collection).stream().filter(predicate).collect(Collectors.toSet());
}
/**
* 先过滤再Map转新List
*
* @param collection 源集合
* @param predicate filter表达式
* @param function map表达式
* @param <T> 泛型
* @param <R> 泛型
* @return 新的list
*/
public static <T, R> List<R> filterThenToList(Collection<T> collection, Predicate<? super T> predicate, Function<? super T, ? extends R> function) {
return nullDefaultEmpty(collection).stream().filter(predicate).map(function).collect(Collectors.to
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot封装的ape-frame轻量级开发框架源码
共529个文件
java:437个
xml:56个
yml:16个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 108 浏览量
2024-09-29
03:48:19
上传
评论
收藏 966KB ZIP 举报
温馨提示
该项目是一款基于SpringBoot封装的ape-frame轻量级开发框架源码,总计530个文件,涵盖437个Java源文件、56个XML配置文件、16个YAML文件、6个Markdown文件、3个文本文件、2个Git忽略文件、2个Shell脚本文件,以及其他相关文件。该框架采用组件化模式,用户可根据需求自由选择组件,实现开箱即用,生态完整。特别适合中小型公司项目快速开发。如感兴趣,请给予支持,您的star是我持续前进的最大动力。
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot封装的ape-frame轻量级开发框架源码 (529个子文件)
spring.factories 141B
spring.factories 116B
wordExport.ftl 84KB
.gitignore 490B
.gitignore 370B
test.html 138B
org.springframework.boot.autoconfigure.AutoConfiguration.imports 48B
CollStreamUtil.java 19KB
HttpUtils.java 14KB
EasyMongoApiTest.java 12KB
DateUtils.java 9KB
AliOSSUtil.java 9KB
QueryBuildUtils.java 8KB
SqlBeautyInterceptor.java 8KB
LambdaQueryWrapper.java 6KB
MailSender.java 6KB
TestController.java 6KB
Compare.java 5KB
EasyMongoServiceImpl.java 5KB
BaseEasyExcelExport.java 5KB
PropertiesUtils.java 4KB
ChickenSocket.java 4KB
EncryptInterceptor.java 4KB
ThreadPoolShutDownTest.java 4KB
ConditionHandler.java 4KB
RedisUtil.java 4KB
Checker.java 3KB
ThreadPoolExecutorProperty.java 3KB
PinYin4jUtils.java 3KB
AbstractBackUpDataHandler.java 3KB
TreeUtils.java 3KB
SwaggerConfig.java 3KB
SysUserServiceImpl.java 3KB
RedisConfig.java 3KB
ZipUtils.java 3KB
EasyMongoService.java 3KB
TestSingleton.java 3KB
SpringContextUtils.java 3KB
JacksonConfig.java 3KB
IdWorkerUtils.java 3KB
ConvertUtil.java 3KB
RequestFilterHandler.java 3KB
GuavaCacheUtil.java 3KB
UserHandler.java 3KB
RuleCheckProcessorChain.java 3KB
SysUserForwardHandler.java 2KB
ResponsibilityChainPatternTest.java 2KB
RedisShareLockUtil.java 2KB
ClassUtil.java 2KB
UserController.java 2KB
MaskUtils.java 2KB
VersionUtils.java 2KB
ConvertUtil.java 2KB
Result.java 2KB
RainHandler.java 2KB
RuleCheckComponent.java 2KB
ApplicationContext.java 2KB
ThreadPoolExecutorBuilder.java 2KB
ApplicationContext.java 2KB
ExportWordUtil.java 2KB
SysUserExcelExport.java 2KB
DelayTaskTest.java 2KB
SysUserController.java 2KB
ApplicationContext.java 2KB
ApplicationContext.java 2KB
IpUtils.java 2KB
MailThreadPoolTest.java 2KB
SysUserDao.java 2KB
SysUserBackDao.java 2KB
LambdaDemo.java 2KB
ConditionWrapper.java 2KB
TestPrototype.java 2KB
ParamsUtil.java 2KB
TaskFilterFactory.java 2KB
TaskFilterFactory.java 2KB
TestFlyweight.java 2KB
HomeController.java 2KB
ChickenRule.java 2KB
XxlJobConfig.java 2KB
SysUserServiceTest.java 2KB
Condition.java 2KB
TaskHandler.java 2KB
ChannelEnum.java 2KB
MassMailTaskService.java 2KB
Func.java 2KB
ApplicationContext.java 2KB
ThreadPollConfig.java 2KB
ValidatorUtil.java 2KB
LogAspect.java 2KB
DefaultConverter.java 2KB
TestState.java 2KB
Loser.java 2KB
BaseRuleCheckProcessor.java 2KB
SwaggerInfo.java 2KB
InterpreterPatternDemo.java 2KB
DesignPatternTest.java 2KB
MailMessage.java 1KB
ApplicationInit.java 1KB
RestTemplateInterceptor.java 1KB
AwardProcess.java 1KB
共 529 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
xyq2024
- 粉丝: 2713
- 资源: 5491
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功