List常用方法汇总工具类总结(持续更新)
程序员文章站
2024-01-14 09:07:16
...
开发中集合是最常用到的结构,所以开发过程中我们也经常会对集合进行一些操作,所以我将常用到的集合方法抽离出来作为 工具类,作为自己平时发过程中的小总结,会持续更新进来的 ~
- 获取集合中的最后一个元素
- 比较两个集合的不同元素
- 将集合等分成固定大小的多个集合
/**
* 获取list中存放的最后一个元素
* @param list
* @param <T>
* @return
*/
public static <T> T getLastElement(List<T> list) {
return list.get(list.size() - 1);
}
/**
* 获取两个集合不同的元素
* @param <T>
* @param oneList
* @param twoList
* @return
*/
public static <T> Collection<T> getDifference(List<T> oneList, List<T> twoList){
return CollectionUtils.disjunction(oneList, twoList);
}
/**
* 将一个List均分成n个list,主要通过偏移量来实现的
*
* @param source 源集合
* @param limit 最大值
* @return
*/
public static <T> List<List<T>> averageAssign(List<T> source, int limit) {
if (null == source || source.isEmpty()) {
return Collections.emptyList();
}
List<List<T>> result = new ArrayList<>();
int listCount = (source.size() - 1) / limit + 1;
int remaider = source.size() % listCount; // (先计算出余数)
int number = source.size() / listCount; // 然后是商
int offset = 0;// 偏移量
for (int i = 0; i < listCount; i++) {
List<T> value;
if (remaider > 0) {
value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
remaider--;
offset++;
} else {
value = source.subList(i * number + offset, (i + 1) * number + offset);
}
result.add(value);
}
return result;
}