parent
4b6d6fddc8
commit
d7b424d3a7
@ -0,0 +1,91 @@
|
||||
package org.opsli.common.utils;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @BelongsProject: think-bboss-parent
|
||||
* @BelongsPackage: com.think.bboss.common.utils
|
||||
* @Author: Parker
|
||||
* @CreateTime: 2021-01-05 14:26
|
||||
* @Description: List 去重
|
||||
*/
|
||||
@Slf4j
|
||||
public final class ListDistinctUtil {
|
||||
|
||||
/**
|
||||
* 针对 包装类型 进行去重
|
||||
* 如 String Integer 等
|
||||
*
|
||||
* @param list 源数据
|
||||
* @return List
|
||||
*/
|
||||
public static <T> List<T> distinct(List<T> list) {
|
||||
if(CollUtil.isEmpty(list)){
|
||||
return ListUtil.empty();
|
||||
}
|
||||
|
||||
List<T> distinctList;
|
||||
try {
|
||||
distinctList = list.stream()
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage(), e);
|
||||
return list;
|
||||
}
|
||||
|
||||
if(CollUtil.isEmpty(distinctList)){
|
||||
return ListUtil.empty();
|
||||
}
|
||||
return distinctList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 针对 对象 进行去重
|
||||
* 如 Object 等 需要自行传入 比较条件
|
||||
*
|
||||
* @param list 源数据
|
||||
* @param comparator 比较器
|
||||
* @return List
|
||||
*/
|
||||
public static <T> List<T> distinct(List<T> list, Comparator<T> comparator) {
|
||||
if(CollUtil.isEmpty(list)){
|
||||
return ListUtil.empty();
|
||||
}
|
||||
|
||||
List<T> distinctList;
|
||||
try {
|
||||
// 去重处理 这里不放在SQL 是为了保证数据库兼容性
|
||||
distinctList = list.stream().collect(
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.toCollection(
|
||||
() -> new TreeSet<>(comparator)
|
||||
),
|
||||
ArrayList::new
|
||||
)
|
||||
);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage(), e);
|
||||
return list;
|
||||
}
|
||||
|
||||
if(CollUtil.isEmpty(distinctList)){
|
||||
return ListUtil.empty();
|
||||
}
|
||||
return distinctList;
|
||||
}
|
||||
|
||||
|
||||
// ==========================
|
||||
|
||||
private ListDistinctUtil(){}
|
||||
|
||||
}
|
Loading…
Reference in new issue