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;
}
-
}