集合工具类

集合工具类

复制代码
  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(", "));
      }
  }
相关推荐
雪之下雪乃的代码日记6 分钟前
Python快速入门(Java开发者版)
java·开发语言·笔记·python
敲个大西瓜26 分钟前
Springboot核心面试题
java·spring boot·后端
器灵科技27 分钟前
Seedance2.5 VS MiniMax H3 同日上线:AI短剧创作者该怎么选?
java·人工智能·阿里云·prompt·aigc
xbgRS1 小时前
Mybatis源码-核心流程及核心类
java·mybatis
zzh___zzh1 小时前
Java Stream API 常用方法笔记
java·笔记
萌动的小火苗1 小时前
1、python基础面试题
java·开发语言·python
molaoye2 小时前
win10下安装MySQL 8.0.*实录
数据库·mysql
麻雀聊技术2 小时前
一重启 AI 就失忆?用 Spring AI + PostgreSQL 3步搞定“长期记忆”持久化(附完整代码)
java·spring·openai
yunwei372 小时前
eBPF 教程:精准隔离已建立的 TCP 连接
linux·安全·开源
千舟软件2 小时前
千舟软件介绍 | 顺便聊聊我们做了哪些产品
大数据·数据库·科技·小程序·业界资讯