铁马冰河2000

导航

Collection常见工具类--CollectionUtil

======================================================Collection常见工具类:

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.util.CollectionUtils;

public class CollectionUtil {
    /**
     * 集合工具类汇总:
     * 
     * static void swap(List<?> list, int i, int j)
     *         在指定List的指定位置i,j处交换元素。
     * static void rotate(List<?> list, int distance)
     *         当distance为正数时,将List集合的后distance个元素“整体”移到前面;当distance为负数时,将list集合的前distance个元素“整体”移到后边。该方法不会改变集合的长度。
     * static Integer max(Collection<? extends Integer> coll)
     *         输出最大数
     * static Integer min(Collection<? extends Integer> coll)
     *      输出最小数
     * static boolean Collections.replaceAll(list, oldVal, newVal)
     *         替换所有元素值oldVal为newVal
     * static Integer Collections.frequency(list, obj)
     *         列表中出现指定元素的次数
     * 
     * ****** 适用于List<Integer>
     */
    
    /***
     * 对数据进行分组List,每组最多eachGroupSize个
     * @param data
     * @param eachGroupSize
     * @return
     */
    public static <T> List<List<T>> splitToGroups(Collection<T> data, int eachGroupSize){
        if(CollectionUtils.isEmpty(data)){
            return new ArrayList<>(0);
        }
        if(eachGroupSize <= 0){
            throw new IllegalArgumentException("参数错误");
        }
        List<List<T>> result = new ArrayList<>();
        for(int index=0; index<data.size(); index+=eachGroupSize){
            result.add(data.stream().skip(index).limit(eachGroupSize).collect(Collectors.toList()));
        }
        return result;
    }
}

======================================================Collection常见工具测试类:

    /**
     * 集合常见操作
     */
    @Test
    public void test_collections(){
        List<Integer> intList = new ArrayList<>();
        intList.add(100);
        intList.add(89);
        intList.add(14);
        intList.add(1);
        intList.add(50);
        //输出最大数
        System.out.println(Collections.max(intList));
        //输出最小数
        System.out.println(Collections.min(intList));
        //输出原列表
        System.out.println(intList);
        //替换所有元素值oldVal为newVal
        Collections.replaceAll(intList, 89, 90);
        System.out.println(intList);
        //在指定List的指定位置i,j处交换元素
        Collections.swap(intList, 2, 1);
        System.out.println(intList);
        //对List集合元素进行随机排序
        Collections.shuffle(intList);
        System.out.println(intList);
        //当distance为正数时,将List集合的后distance个元素“整体”移到前面;当distance为负数时,将list集合的前distance个元素“整体”移到后边。该方法不会改变集合的长度
        Collections.rotate(intList, 3);
        System.out.println(intList);
        //列表中出现指定元素的次数
        System.out.println(Collections.frequency(intList, 50));
    }
    
    /**
     * 对集合进行分组List
     */
    @Test
    public void test_splitToGroups(){
        List<Integer> intList = new ArrayList<>();
        for(int i=4; i>=0; i--){
            intList.add(i);
        }
        System.out.println(intList);
        List<List<Integer>> groups = CollectionUtil.splitToGroups(intList, 3);
        System.out.println(groups);
    }

 

posted on 2022-02-03 20:47  铁马冰河2000  阅读(1179)  评论(0编辑  收藏  举报