集合工具类

集合工具类

复制代码
  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(", "));
      }
  }
相关推荐
ITxiaobing2023几秒前
如何构建IP维度的假量排查流程:以AppsFlyer Protect360判假后的实战为例
网络·数据库
牧以南歌〆13 分钟前
数据结构<八>链式队列
c语言·数据结构·算法
Reart25 分钟前
Leetcode 188.买卖股票的最佳时机4(718)
后端·算法
2601_9507607928 分钟前
BCMA:急性髓系白血病免疫治疗的新型可行靶点
人工智能·算法·蛋白
怎么比啊都是大神36 分钟前
关于==null、isEmpty()和StrUtil.isBlank()
java
唐青枫38 分钟前
Java Neo4j 实战指南:从图模型、Cypher 到 Spring Boot 关系查询
java
Reart41 分钟前
Leetcode 123.买卖股票的最佳时期3(内有随心谈,718)
后端·算法
观远数据44 分钟前
从离线开发到实时同步:DataFlow如何支撑企业级数据治理闭环
java·windows·microsoft·excel
ywl4708120871 小时前
mysql 锁定读和非锁定读
数据库·mysql
流浪0011 小时前
MySQL数据库基础篇(三):MySQL 数据库库级操作全解:创建、字符集、管理与备份恢复实战
数据库·mysql