java集合处理工具类

package com.huofutp.cloud.oa.crm.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**

  • @Title: 集合处理工具类

  • @Package com.huofutp.cloud.oa.crm.util

  • @Description: TODO
    */
    public class ListUtils {

    public static final List list = new ArrayList<>();

    /**

    • 将集合list进行拆分成多个小集合,每个小集合长度为listCount

    • @param @param list

    • @param @param listCount

    • @param @return

    • @return List<List < E>>
      */
      public static List<List> splitList(List list, int listCount) {
      List<List> datals = new ArrayList<>();
      if (list.size() > listCount) {
      int size = list.size(); // 获取总的数量
      int count = size / listCount; // 获取要拆分的集合数量

       for (int i = 0; i < count; i++) {// 循环的拆分大集合,每个子集合放入listCount条数据
           List<E> subData = new ArrayList<>(listCount);
           for (int j = i * listCount; j < (i + 1) * listCount; j++) {
               subData.add(list.get(j));
           }
           datals.add(subData);
       }
       // 封装余下的数据
       List<E> endSubData = new ArrayList<>(size - (count * listCount));
       for (int i = (count * listCount); i < size; i++) {
           endSubData.add(list.get(i));
       }
       if (!endSubData.isEmpty()) {
           datals.add(endSubData);
       }
      

      } else {
      datals.add(list);
      }
      return datals;
      }

    /**

    • 设置分页页码
    • @param page
    • @param size
    • @return
      */
      public static Integer setPage(Integer page, Integer size) {
      return page = (page - 1) * size;
      }

    /**

    • 内存分页
    • @param list
    • @param current
    • @param size
    • @return
      */
      public static List<?> pageObj(List<?> list, Integer current, Integer size) {
      int pageNo = (current.intValue() - 1) * size.intValue();
      int pageSize = current.intValue() * size.intValue();
      if (list.size() < pageSize) {
      pageSize = list.size();
      }
      try {
      list = list.subList(pageNo, pageSize);
      } catch (Exception e) {
      list = list.subList(0, pageSize);
      }
      return list;
      }

    /**

    • 深拷贝 用于一个对象添加到不同集合 OR 一个对象每次更新数据后添加到同一个集合

    • @param object 需要拷贝的对象

    • @return
      */
      @SuppressWarnings(“unchecked”)
      public static T clone(T object) {
      T cloneObj = null;
      try {
      // 写入字节流
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      ObjectOutputStream obs = new ObjectOutputStream(out);
      obs.writeObject(object);
      obs.close();

       // 分配内存,写入原始对象,生成新对象
       ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray());
       ObjectInputStream ois = new ObjectInputStream(ios);
       // 返回生成的新对象
       cloneObj = (T) ois.readObject();
       ois.close();
      

      } catch (Exception e) {
      e.printStackTrace();
      }
      return cloneObj;
      }

    /**

    • 转换集合(由于Arrays.asList生成的集合是内部类,无法做增删改操作,所以需要转成我们熟知的List)
    • @param dataList 数据集合
    • @return
      */
      public static List<?> transitionList(List<?> dataList) {
      ArrayList<?> list = new ArrayList<>(dataList);
      return list;
      }

    /**

    • 初始化集合
    • @param list 集合
    • @return
      */
      public static List<?> initList(List<?> list) {
      if (list == null) {
      list = new ArrayList<>();
      }
      return list;
      }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值