All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.chobit.commons.utils.Collections2 Maven / Gradle / Ivy

The newest version!
package org.chobit.commons.utils;


import org.chobit.commons.model.Pair;

import java.util.*;

import static org.chobit.commons.utils.StrKit.isBlank;

/**
 * 集合操作辅助类
 *
 * @author robin
 */
public final class Collections2 {

    /**
     * 判断集合是否为空
     *
     * @param coll 目标集合
     * @return 集合是否为空
     */
    public static boolean isEmpty(Collection coll) {
        return null == coll || coll.isEmpty();
    }

    /**
     * 判断Map是否不为空
     *
     * @param map 目标集合
     * @return Map是否不为空
     */
    public static boolean isNotEmpty(Map map) {
        return !isEmpty(map);
    }

    /**
     * 判断集合是否不为空
     *
     * @param coll 目标集合
     * @return 集合是否不为空
     */
    public static boolean isNotEmpty(Collection coll) {
        return !isEmpty(coll);
    }

    /**
     * 判断Map是否为空
     *
     * @param map 目标集合
     * @return Map是否为空
     */
    public static boolean isEmpty(Map map) {
        return null == map || map.isEmpty();
    }


    /**
     * 根据提供的元素创建列表
     *
     * @param elements 列表元素
     * @param       列表元素类型
     * @return 新建的列表
     */
    @SafeVarargs
    public static  List listOf(T... elements) {
        List list = new LinkedList<>();
        if (null == elements) {
            return list;
        }
        Collections.addAll(list, elements);
        return list;
    }


    /**
     * 取出集合中的第一个元素
     *
     * @param coll 集合
     * @param   集合元素类型
     * @return 集合中的第一个元素。如集合为空返回null
     */
    public static  T first(Collection coll) {
        if (isEmpty(coll)) {
            return null;
        }
        return coll.iterator().next();
    }


    /**
     * 将Pair集合转为Map对象
     *
     * @param pairs Pair集合
     * @param    Key 类型
     * @param    Value 类型
     * @return Map对象
     */
    public static  Map toMap(Collection> pairs) {
        Map map = new HashMap<>(8);
        for (Pair p : pairs) {
            map.put(p.getKey(), p.getValue());
        }
        return map;
    }


    /**
     * 将Map对象转为Pair集合
     *
     * @param map Map对象
     * @param  Key类型
     * @param  Value类型
     * @return Pair集合
     */
    public static  List> toPairs(Map map) {
        List> result = new LinkedList<>();
        for (Map.Entry entry : map.entrySet()) {
            result.add(new Pair<>(entry.getKey(), entry.getValue()));
        }
        return result;
    }


    /**
     * 将key和value放入一个map实例中
     *
     * @param key   key的值
     * @param value value的值
     * @param    Key类型
     * @param    Value类型
     * @return Map对象
     */
    public static  Map mapOf(K key, V value) {
        Map map = new HashMap<>(1);
        map.put(key, value);
        return map;
    }


    /**
     * 拼接集合数据为字符串
     *
     * @param coll      集合
     * @param separator 分隔符
     * @param        集合数据类型
     * @return 集合数据对应的字符串
     */
    public static  String join(Collection coll, String separator) {
        if (isEmpty(coll)) {
            return "";
        }
        StringBuilder builder = new StringBuilder();
        for (T t : coll) {
            if (null == t || isBlank(t.toString())) {
                continue;
            }
            if (builder.length() > 0) {
                builder.append(separator);
            }
            builder.append(t);
        }
        return builder.toString();
    }


    private Collections2() {
        throw new UnsupportedOperationException("Private constructor, cannot be accessed.");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy