feat: add utilities method for list

This commit is contained in:
easepan 2020-07-20 19:21:25 +08:00
parent 8236ae61f2
commit d9f862ce67
2 changed files with 69 additions and 44 deletions

View File

@ -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()}

View File

@ -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));