集合工具类

集合工具类

复制代码
  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(", "));
      }
  }
相关推荐
Sirius Wu1 小时前
Maven环境如何正确配置
java·maven
CC__xy1 小时前
demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
windows
健康平安的活着2 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
No0d1es2 小时前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级
听雪楼主.2 小时前
Oracle Undo Tablespace 使用率暴涨案例分析
数据库·oracle·架构
我科绝伦(Huanhuan Zhou)2 小时前
KINGBASE集群日常维护管理命令总结
数据库·database
妖灵翎幺2 小时前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX2 小时前
MySQL的事务日志:
数据库·mysql
Java小白程序员2 小时前
Spring Framework :IoC 容器的原理与实践
java·后端·spring
炫友呀3 小时前
Centos 更新/修改宝塔版本
linux·运维·centos