首页 > 其他分享 >集合工具类

集合工具类

时间:2023-06-12 15:12:31浏览次数:25  
标签:return list public static 集合 工具 isNullOrEmpty final

package com.yashi.common.utils;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import javafx.util.Pair;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors;

/** 集合类工具 **/
public final class CollectsHelper {
    private CollectsHelper() {
    }
    // 集合 
    public static <T> boolean isNullOrEmpty(final Collection<T> collection) {
        return collection == null || collection.isEmpty();
    }
    // 数组
    public static <T> boolean isNullOrEmpty(final T[] array) {
        return array == null || array.length == 0;
    }
    // map
    public static <K, V> boolean isNullOrEmpty(final Map<K, V> map) {
        return map == null || map.isEmpty();
    }
    // 是否包含某元素 
    public static <T> boolean contains(final T[] array, final T val) {
        for (T t : array) {
            if (val.equals(t)) {
                return true;
            }
        }
        return false;
    }

    public static <T> Optional<T> head(final List<T> list) {
        return isNullOrEmpty(list) ? Optional.empty() : Optional.ofNullable(list.get(0));
    }

    public static <T> Optional<T> end(final List<T> list) {
        return isNullOrEmpty(list) ? Optional.empty() : Optional.ofNullable(list.get(list.size() - 1));
    }

    public static <T, R> List<R> map(final Collection<T> list, Function<? super T, R> mapF) {
        return isNullOrEmpty(list) ? Lists.newArrayList() : list.stream().map(mapF).collect(Collectors.toList());
    }

    public static <T> List<T> filter(final List<T> list, Function<T, Boolean> compare) {
        if(null == compare) {
            return list;
        }
        if(!isNullOrEmpty(list)) {
            return list.stream().filter(t -> compare.apply(t)).collect(Collectors.toList());
        }
        return Lists.newArrayList();
    }

    public static <V> Map<Integer, V> asMap(final List<V> list) {
        Map<Integer, V> result = Maps.newHashMap();
        if(!isNullOrEmpty(list)) {
            int size = list.size();
            for (int idx = 0; idx < size; idx++) {
                result.put(idx, list.get(idx));
            }
        }
        return result;
    }

    public static <K, V> LinkedHashMap<K, V>  ofMap(final List<V> list, final Function<V, K> keyF) {
        LinkedHashMap<K, V> result = Maps.newLinkedHashMap();
        if(!isNullOrEmpty(list)) {
            for (V value : list) {
                result.put(keyF.apply(value), value);
            }
        }
        return result;
    }

    public static <K, V, R> ListMultimap<K, R> group(final List<V> list, final Function<V, Pair<K, R>> pairF) {
        ListMultimap<K, R> result = ArrayListMultimap.create();
        if(!isNullOrEmpty(list)) {
            for (V v : list) {
                Pair<K, R> pair = pairF.apply(v);
                result.put(pair.getKey(), pair.getValue());
            }
        }
        return result;
    }

    public static <T, K, U, A, R> Map<K, R> groupToCollector(final Collection<T> list,
                                                             final Function<? super T, K> keyFunc,
                                                             final Function<? super T, ? extends U> groupByEle,
                                                             final Collector<? super U, A, R> valueCol) {
        if(CollectsHelper.isNullOrEmpty(list)){
            return Maps.newHashMap();
        }
        return list.stream().collect(Collectors
                        .groupingBy(keyFunc,Collectors.mapping(groupByEle, valueCol)));

    }

    public static void main(String[] args) {
       Map map=new HashMap();
//       map.put("1","00");
        boolean b = CollectsHelper.isNullOrEmpty(map);
        System.out.println("b = " + b);
    }
}

 

标签:return,list,public,static,集合,工具,isNullOrEmpty,final
From: https://www.cnblogs.com/cjxiaozhuang/p/17475060.html

相关文章

  • VB和c#转换工具
    使用vs的插件代码转换器(VB-C#)-VisualStudioMarketplace安装完以后点击你的程序,就可以方便的进行Vb>c#的来回转换了。 转换完成后重新打开就行,如果产生以下错误:错误CS1555未能找到为Main方法指定的“SubMain”  在应用程序启用对象选择目前的解决方案就可......
  • 加密工具类
    packagecom.yashi.common.utils;importjavafx.util.Pair;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.spec.SecretKeySpec;importjava.io.ByteArrayInputStream;imp......
  • 在线报表怎么做?有没有好用的在线报表工具?
    随着企业数据的不断增长,数据分析和可视化已经成为了企业决策的重要手段。而在线报表则是其中的一个重要工具。本文将介绍如何制作在线报表以及几个好用的在线报表工具。一、在线报表的制作步骤制作在线报表需要经过以下步骤:收集数据:收集所需的数据,并对其进行清理和整理,确保数据的准......
  • MySQL闪回工具简介 及 binlog2sql工具用法
    一、闪回工具简介1.工具分类第一类以patch形式集成到官方工具mysqlbinlog中优点上手成本低。mysqlbinlog原有的选项都能直接利用,只是多加了一个闪回选项,未来有可能被官方收录。支持离线解析。缺点兼容性差、项目活跃度不高。难以添加新功能,实战效果欠佳。安装麻烦。需要对m......
  • 日期工具类
    packagecom.yashi.common.utils;importlombok.extern.slf4j.Slf4j;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.ParsePosition;importjava.text.SimpleDateFormat;importjava.time.LocalDate;importjava.time.LocalDateTime......
  • SM2259XT2开卡长江TAS,附SM2259XT2开卡工具,我更喜欢MAS1102量产工具
    闲的没事干,测一下59xt2+TAS,用的公版主控板,跳线按官方的来,电压给1v2,vcc不用管默认,都能用。随便焊一下,ce齐全,单颗2ce128G,单帖分布2ch/1ce。跑个rdt看看,DDR800。开卡工具是从量产部落下载的YMTC_TAS开卡工具。RDTMaxECC均在十几二十,全新自封片,还算不错体质。直接开卡,轻松开出来,容量aut......
  • 12、容器单机编排工具Docker Compose安装
    容器单机编排工具DockerCompose安装DockerCompose离线安装,直接从github或国内镜像站下载安装对应版本https://github.com/docker/compose/releases找到docker-compose-linux-x86_64,下载拖入linux系统[root@ubuntu2004~]#mvdocker-compose-linux-x86_64-v2.12.0/usr/bin/d......
  • 关于map/list集合 和 json串的相互转换
    JSON.parse(tempWhiteBoardTextBook);//将接收到的服务器字符串转为JavaScript对象;JSON.stringify(tempWhiteBoardTextBook);//将JavaScript对象或值转换为JSON字符串,一般是发送json数据到服务器; 1、使用此net.sf.json.JSONObject包将map/list集合或者json串转......
  • 常用的webshell管理工具的流量特征 4
    一、菜刀流量特征最开始是明文传输,后来采用base64加密:PHP类WebShell链接流量如下:第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;第二:(base64_decode(POST[z0])),(base64decode(_POST[z0])),(base64_decode(POST[z0])),(base64ecode(_PO......
  • Python 集合
    Set数据类型一、创建一个set#set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。#访问速度快,天生解决了重复问题>>>s1=set(['root','gm','evescn','gm'])二、查看set>>>s1{'gm','evescn......