集合工具类

集合工具类

复制代码
  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(", "));
      }
  }
相关推荐
xx155802862xx9 分钟前
Python如何给视频添加音频和字幕
java·python·音视频
jllllyuz31 分钟前
如何为服务器生成TLS证书
运维·服务器·数据库
小猫咪怎么会有坏心思呢40 分钟前
华为OD机试-最短木板长度-二分法(A卷,100分)
java·开发语言·华为od
简朴-ocean42 分钟前
如何删除linux空的文件夹
linux·运维·服务器
伍六星1 小时前
Flask和Django,你怎么选?
数据库·django·flask
Code Warrior1 小时前
【Linux】Linux基础指令3
linux·服务器
杜哥无敌1 小时前
ORACLE 修改端口号之后无法启动?
数据库·oracle
jndingxin1 小时前
OpenCV CUDA模块光流计算-----实现Farneback光流算法的类cv::cuda::FarnebackOpticalFlow
人工智能·opencv·算法
hymuuuu1 小时前
【最新案例】智能物料称重柜/生鲜称重售卖柜系统, 共享自助管理系统, 物联网应用定制开发
java
远方16091 小时前
0x-4-Oracle 23 ai-sqlcl 25.1.1 独立安装-配置和优化
数据库·ci/cd·oracle