集合工具类

集合工具类

复制代码
  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(", "));
      }
  }
相关推荐
山甫aa3 分钟前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
土司大王9 分钟前
LeetCode hot100——相交链表
算法·leetcode·链表
土司大王11 分钟前
LeetCode hot100——回文链表
算法·leetcode·链表
csdn_aspnet12 分钟前
C# 高效便利的处理数据
开发语言·windows·c#
鱼鳞_13 分钟前
热门八股-JVM
java·jvm
JavaPub-rodert14 分钟前
MongoDB 常用命令和常见问题大全
数据库·mongodb
ly768914 分钟前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python
淡海水18 分钟前
03-02-线性-List-T-动态数组布局-扩容与操作成本
数据结构·windows·c#·list·编译·clr·机器码
Mortalbreeze20 分钟前
深入理解 TCP 协议(二):TCP 可靠传输与高效通信机制详解
linux·服务器·网络·网络协议·tcp/ip
长谷深风11124 分钟前
好的 Tool Schema,不是字段越全越好
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计