java集合工具类

java集合工具类

java 复制代码
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;

public class CollUtil {
    /**
     * 集合是否为空
     *
     * @param collection 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 集合是否为非空
     *
     * @param collection 集合
     * @return 是否为非空
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return false == isEmpty(collection);
    }

    /**
     * 集合是否为非空 --> 执行
     * @param collection
     * @param consumer
     * @param <T>
     */
    public static <T> void isNotEmpty(Collection<T> collection, Consumer<Collection<T>> consumer){
        if(isNotEmpty(collection)){
            consumer.accept(collection);
        }
    }

    /**
     * 集合是否为非空 --> 执行
     * @param collection
     * @param consumer
     * @param <T>
     */
    public static <T> void isNotEmptyList(List<T> collection, Consumer<List<T>> consumer){
        if(isNotEmpty(collection)){
            consumer.accept(collection);
        }
    }

    /**
     * 集合是否为空 --> 执行
     * @param collection
     * @param consumer
     * @param <T>
     */
    public static <T> void isEmpty(Collection<T> collection, Consumer<Collection<T>> consumer){
        if(isEmpty(collection)){
            consumer.accept(collection);
        }
    }

    /**
     * 集合是否为空 --> 执行
     * @param collection
     * @param consumer
     * @param <T>
     */
    public static <T> void isEmptyList(List<T> collection, Consumer<List<T>> consumer){
        if(isEmpty(collection)){
            consumer.accept(collection);
        }
    }

    /**
     * 去重 返回新集合
     * @param collection
     * @return
     * @param <T>
     */
    public static <T> List<T> distinct(List<T> collection){
       return collection.stream().distinct().collect(Collectors.toList());
    }
}
相关推荐
椰椰椰耶1 小时前
【Python】列表和元组
开发语言·python
2401_857617621 小时前
Ruby遇上GUI:探索Ruby桌面应用开发的新天地
开发语言·人工智能
网络点点滴2 小时前
Object.create的原型继承
开发语言·javascript·ecmascript
RaidenQ2 小时前
2024.8.24 Python,链表异常断裂问题,双链表的建立问题,全排列中的引用机制与copy的使用,最大子数组和
开发语言·python·链表
环能jvav大师2 小时前
在Ubuntu系统中安装R语言并使用R Markdown
linux·运维·服务器·开发语言·vscode·学习·r语言
bobo-rs2 小时前
Go语言操作文件上传和下载应用教程
开发语言·golang·iphone·文件上传·文件下载·go文件
海边散步的蜗牛3 小时前
Python编程、机器学习与深度学习
python·深度学习·机器学习
2402_857589363 小时前
探索Objective-C中的富文本世界:NSAttributedString与NSMutableAttributedString
开发语言·macos·objective-c
zhyhgx3 小时前
Android常见界面控件(三)
android·xml·开发语言·javascript
孺子牛 for world3 小时前
Matlab程序,实现卷积神经网络
开发语言·matlab·cnn