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

集合工具类

时间:2024-09-24 12:21:47浏览次数:8  
标签:return list List param 集合 new 工具 public


集合工具类

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
/**
 * 集合工具类
 */
public class CollectionUtils {
 
    /**
     **取两个集合的交集
     * @param listOne 集合1
     * @param listTwo 集合2
     * @return java.util.List<java.lang.String>
     **/
    public static List<String> getIntersection(List<String> listOne, List<String> listTwo) {
        List<String> intersectionList = new ArrayList<>();
        if (CollectionUtil.isNotEmpty(listOne) && CollectionUtil.isNotEmpty(listTwo)) {
            for (String fileId : listOne) {
                if (listTwo.contains(fileId)) {
                    intersectionList.add(fileId);
                }
            }
        }
        return intersectionList;
    }
 
    /**
     **合并两个集合的元素
     * @param listOne
     * @param listTwo
     * @return java.util.List<T>

     **/
    public static <T> List<T> mergeLists(List<T> listOne, List<T> listTwo) {
        List<T> result = new ArrayList<>();
        if (CollectionUtil.isNotEmpty(listOne)) {
            result.addAll(listOne);
        }
        if (CollectionUtil.isNotEmpty(listTwo)) {
            result.addAll(listTwo);
        }
        return result;
    }
 
    /**
     **去重复
     * @param list
     * @return java.util.List<java.lang.String>
     **/
    public static List<String> removeDuplicates(List<String> list) {
        Set<String> set = new HashSet<>(list);
        return new ArrayList<>(set);
    }
 
    /**
     * 将allList剔除掉existList后返回
     * @param allList
     * @param existList
     * @return java.util.List<java.lang.String>
     **/
    public static List<String> removeExistingElements(List<String> allList, List<String> existList) {
        List<String> resultList = new ArrayList<>(allList);
        resultList.removeAll(existList);
        return resultList;
    }
 
    /**
     * 获取两个List的并集
     *
     * @param list1 第一个List
     * @param list2 第二个List
     * @return 两个List的并集
     */
    public static <T> List<T> union(List<T> list1, List<T> list2) {
        Set<T> set = new HashSet<>();
        set.addAll(list1);
        set.addAll(list2);
        return new ArrayList<>(set);
    }
 
    /**
     * 获取两个List的交集
     *
     * @param list1 第一个List
     * @param list2 第二个List
     * @return 两个List的交集
     */
    public static <T> List<T> intersection(List<T> list1, List<T> list2) {
        List<T> result = new ArrayList<>();
        for (T element : list1) {
            if (list2.contains(element)) {
                result.add(element);
            }
        }
        return result;
    }
 
    /**
     * 去除List中的重复元素
     *
     * @param list 原始List
     * @return 去除重复元素后的List
     */
    public static <T> List<T> removeDuplicates(List<T> list) {
        Set<T> set = new HashSet<>();
        List<T> result = new ArrayList<>();
        for (T element : list) {
            if (set.add(element)) {
                result.add(element);
            }
        }
        return result;
    }
 
    /**
     * 实体转Map
     * @param entity 实体
     * @return map
     */
    public static Map<String, Object> entityToMap(Object entity) {
        Map<String, Object> map = new HashMap<>(20);
        try {
            // 获取实体对象的class
            Class<?> clazz = entity.getClass();
            // 遍历实体对象的所有字段
            for (Field field : clazz.getDeclaredFields()) {
                // 设置字段可访问
                field.setAccessible(true);
                // 获取字段名和字段值,并放入map中
                String fieldName = field.getName();
                Object fieldValue = field.get(entity);
                if ("sex".equalsIgnoreCase(fieldName)) {
                    map.put(fieldName, fieldValue != null && Str.isNotEmpty(fieldValue.toString()) ? ("0".equalsIgnoreCase(fieldValue.toString()) ? "男" : "女") : "未知");
                } else {
                    map.put(fieldName, fieldValue);
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return map;
    }
 
    /**
     **将List<String>集合转为以逗号隔开的字符串,如:
     * '张三', '李四', '王五'
     * @param list
     * @return java.lang.String
     **/
    public static String convertListToString(List<String> list) {
        if (CollectionUtil.isEmpty(list)){
            return "";
        }
        return list.stream().map(s -> "'" + s + "'").collect(Collectors.joining(", "));
    }
}


标签:return,list,List,param,集合,new,工具,public
From: https://blog.51cto.com/u_15903793/12098443

相关文章

  • JSON处理工具类
    JSON处理工具类importorg.json.JSONArray;importorg.json.JSONObject;importjava.util.ArrayList;importjava.util.List;/***JSON处理工具类*/publicclassJsonUtils{/****将json字符串转为map*@paramjson*@returnjava.util.Map<......
  • 低代码工具和大模型AI助手之间的关系(二)
    ......
  • Linux C++ 开发8 - 性能分析工具汇总
    1.LinuxC++性能分析工具汇总1.1.gprof1.2.Valgrind1.3.Perf1.4.SystemTap1.5.NsightComputing1.6.GooglePerformanceTools1.7.IntelVTuneProfiler1.8.OProfile1.9.IntelVTune1.10.SystemTap1.11.FlameGraph2.总结1.LinuxC++性能分析工......
  • 并发编程工具集——Fork/Join-上(三十六)
    简述前面提到的线程池、Future、CompletableFuture和CompletionService,这些工具类都是在帮助我们站在任务的视角来解决并发问题,而不是让我们纠缠在线程之间如何协作的细节上(比如线程之间如何实现等待、通知等)。精髓:对于简单的并行任务,你可以通过“线程池+Future”的方案......
  • 笔魂AI绘画工具使用感受
    在数字化艺术的浪潮中,AI技术正逐渐成为推动创意产业发展的重要力量。作为一名数字艺术家,我近期有幸体验了一款名为“笔魂AI绘画”的工具,它以其独特的功能和便捷的操作界面给我带来了全新的创作体验。笔魂AI绘画工具的使用过程非常直观。初次打开软件时,其简洁明了的界面设计让人一目......
  • Java 动态编译工具 Janino 和 Liquor 差别
    如果你只要Java7及以下的语法支持,建议Janino。如果要你想更全的Java8、Java11、Java17、Java21等语法,可以选Liquor。1、它们相同的地方提供的相似的能力接口接口JaninoLiquor动态编译器SimpleCompilerDynamicCompiler表达式评估器ExpressionEvaluator......
  • 绘制印章的开源工具DrawStampUtils使用
    最近写了一个绘制印章的工具DrawStampUtils,具有比较完整的印章修改效果,定制化度较高,git地址(https://github.com/xxss0903/drawstamputils),也可以在npmjs中搜索DrawStampUtils即可//将要绘制的canvas组件的引用传入,还有就是对应的毫米转像素的大小传入即可conststampCanva......
  • cmd增强工具——clink
    作为一个喜欢折腾各种花里胡哨东西的人,我每次都会花费大量时间在这上面。cmd作为windows一个很重要的组成部分,很多时候我们都会应用到它。与新出的powershell相比,cmd的功能肯定是没有那么强大的,但其重要性绝对不输给pwsh。但是cmd真的很简单,没有命令补全,也没有这么多的快捷键,功能......
  • 将字符串集合转换成逗号分隔字符串的方法
    1.使用String.join()List<String>strList=newArrayList<>();strList.add("aaa");strList.add("bbb");Stringstr=String.join(",",strList);System.out.println(str);结果aa......
  • 所有协议集合
    1.HTTP(超文本传输协议):官方定义:一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网数据通信的基础。用途:主要用于在Web浏览器和Web服务器之间传输超文本,如网页、图像、视频等资源。数据结构:请求报文包括请求行、请求头部、空行和请求体;响应报文包括状态行、响应头......