mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
feat: add utilities method for list
This commit is contained in:
parent
8236ae61f2
commit
d9f862ce67
@ -12,39 +12,11 @@ import cn.hutool.core.lang.Matcher;
|
|||||||
import cn.hutool.core.lang.func.Func1;
|
import cn.hutool.core.lang.func.Func1;
|
||||||
import cn.hutool.core.lang.hash.Hash32;
|
import cn.hutool.core.lang.hash.Hash32;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.*;
|
||||||
import cn.hutool.core.util.CharUtil;
|
|
||||||
import cn.hutool.core.util.ClassUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.ReflectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import cn.hutool.core.util.TypeUtil;
|
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.AbstractCollection;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Deque;
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.NavigableSet;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.Stack;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
import java.util.TreeSet;
|
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
@ -64,6 +36,45 @@ import java.util.function.Function;
|
|||||||
*/
|
*/
|
||||||
public class CollUtil {
|
public class CollUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充List,以达到最小长度
|
||||||
|
* @param list 列表
|
||||||
|
* @param minLen 最小长度
|
||||||
|
* @param padObj 填充的对象
|
||||||
|
* @param <T> 集合元素类型
|
||||||
|
*/
|
||||||
|
public static <T> void padLeft(List<T> list, int minLen, T padObj) {
|
||||||
|
Objects.requireNonNull(list);
|
||||||
|
if (isEmpty(list)) {
|
||||||
|
padRight(list, minLen, padObj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int iterCnt = minLen - list.size();
|
||||||
|
if (iterCnt < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<T> padList = new ArrayList<>(iterCnt);
|
||||||
|
for (int i = 0; i < iterCnt; i++) {
|
||||||
|
padList.add(padObj);
|
||||||
|
}
|
||||||
|
list.addAll(0, padList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充List,以达到最小长度
|
||||||
|
* @param list 列表
|
||||||
|
* @param minLen 最小长度
|
||||||
|
* @param padObj 填充的对象
|
||||||
|
* @param <T> 集合元素类型
|
||||||
|
*/
|
||||||
|
public static <T> void padRight(List<T> list, int minLen, T padObj) {
|
||||||
|
Objects.requireNonNull(list);
|
||||||
|
int iterCnt = minLen - list.size();
|
||||||
|
for (int i = 0; i < iterCnt; i++) {
|
||||||
|
list.add(padObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 如果提供的集合为{@code null},返回一个不可变的默认空集合,否则返回原集合<br>
|
* 如果提供的集合为{@code null},返回一个不可变的默认空集合,否则返回原集合<br>
|
||||||
* 空集合使用{@link Collections#emptySet()}
|
* 空集合使用{@link Collections#emptySet()}
|
||||||
|
@ -10,20 +10,7 @@ import lombok.Data;
|
|||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedSet;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 集合工具类单元测试
|
* 集合工具类单元测试
|
||||||
@ -32,6 +19,33 @@ import java.util.SortedSet;
|
|||||||
*/
|
*/
|
||||||
public class CollUtilTest {
|
public class CollUtilTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPadLeft() {
|
||||||
|
List<Integer> srcList = CollUtil.newArrayList();
|
||||||
|
List<Integer> answerList = CollUtil.newArrayList(2, 1);
|
||||||
|
CollUtil.padLeft(srcList, 1, 1);
|
||||||
|
CollUtil.padLeft(srcList, 2, 2);
|
||||||
|
Assert.assertEquals(srcList, answerList);
|
||||||
|
|
||||||
|
srcList = CollUtil.newArrayList(1, 2);
|
||||||
|
answerList = CollUtil.newArrayList(1, 2);
|
||||||
|
CollUtil.padLeft(srcList, 2, 1);
|
||||||
|
Assert.assertEquals(srcList, answerList);
|
||||||
|
|
||||||
|
srcList = CollUtil.newArrayList(3);
|
||||||
|
answerList = CollUtil.newArrayList(1, 1, 3);
|
||||||
|
CollUtil.padLeft(srcList, 3, 1);
|
||||||
|
Assert.assertEquals(srcList, answerList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPadRight() {
|
||||||
|
List<Integer> srcList = CollUtil.newArrayList(6);
|
||||||
|
List<Integer> answerList = CollUtil.newArrayList(6, 3, 3, 3, 3);
|
||||||
|
CollUtil.padRight(srcList, 5, 3);
|
||||||
|
Assert.assertEquals(srcList, answerList);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isNotEmptyTest() {
|
public void isNotEmptyTest() {
|
||||||
Assert.assertFalse(CollUtil.isNotEmpty((Collection<?>) null));
|
Assert.assertFalse(CollUtil.isNotEmpty((Collection<?>) null));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user