Java 集合 —— Collections及其常用API

本文详细介绍了Java中的Collections工具类,包括排序、二分法查找、倒序排列、随机排序、元素交换、查找最大值和最小值以及填充列表等操作,并提供了相应的代码示例。这些方法对于日常开发中对集合的操作非常实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Collections是一个工具类,定义了若干用于类集(Collection)和映射(Map)的静态方法。

1、排序

sort(List<T> list)根据其元素的自然排序对指定的列表进行排序。
static <T> void    sort(List<T> list, Comparator<? super T> c)根据指定的比较器对指定的列表进行排序。

 

    @Test
    public void sorted(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");

        System.out.println("排序前");
        System.out.println(list);
        Collections.sort(list);
        System.out.println("排序后");
        System.out.println(list);
    }

输出内容:
排序前
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
排序后
[bibidong, chenxin, mahongjun, qiandaoliu, qiandaoliu, tangsan]

list的主要特点就是有序且可重复

 2、二分法查找

二分法查找的前提条件是:集合内容必须是从小到大排序的

Comparable<? super T>> list, T key)使用二叉搜索算法搜索指定对象的指定列表。
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)使用二叉搜索算法搜索指定对象的指定列表。
    @Test
    public void binarySearchTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        Collections.sort(list);
        System.out.println("排序后");
        System.out.println(list);

        int index = Collections.binarySearch(list, "qiandaoliu");
        System.out.println("qiandaoliu 出现的位置在 " + index);
    }

输出内容:
排序后
[bibidong, chenxin, mahongjun, qiandaoliu, qiandaoliu, tangsan]
qiandaoliu 出现的位置在 4

 

3、倒序排列

reverse(List<?> list)反转指定列表中元素的顺序。
    @Test
    public void reverseTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println("反序前");
        System.out.println(list);
        Collections.reverse(list);
        System.out.println("反序后");
        System.out.println(list);
    }

输出内容:
反序前
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
反序后
[qiandaoliu, mahongjun, chenxin, qiandaoliu, bibidong, tangsan]

4、随机排序

shuffle(List<?> list)使用默认的随机源随机排列指定的列表。
shuffle(List<?> list, Random rnd)使用指定的随机源随机排列指定的列表。
    @Test
    public void shuffleTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println("乱序前");
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println("乱序前");
        System.out.println(list);
    }

输出内容:
乱序前
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
乱序前
[bibidong, tangsan, qiandaoliu, mahongjun, qiandaoliu, chenxin]

5、交换

swap(List<?> list, int i, int j)交换指定列表中指定位置的元素。
    @Test
    public void swapTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println("交换前");
        System.out.println(list);
        System.out.println("交换后");
        Collections.swap(list, 2,4);
        System.out.println(list);
    }

输出内容:
交换前
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
交换后
[tangsan, bibidong, mahongjun, chenxin, qiandaoliu, qiandaoliu]

6、最大值

max(Collection<? extends T> coll)根据其元素的 自然顺序返回给定集合的最大元素。
max(Collection<? extends T> coll, Comparator<? super T> comp)根据指定的比较器返回给定集合的最大元素。
    @Test
    public void maxTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println(list);
        String max = Collections.max(list);
        System.out.println("最大值");
        System.out.println(max);
    }

输出内容:
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
最大值
tangsan

7、最小值

min(Collection<? extends T> coll)根据其元素的 自然顺序返回给定集合的最小元素。
min(Collection<? extends T> coll, Comparator<? super T> comp)根据指定的比较器返回给定集合的最小元素。
    @Test
    public void minTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println(list);
        String min = Collections.min(list);
        System.out.println("最小值");
        System.out.println(min);
    }

输出内容:
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
最小值
bibidong

8、填充

fill(List<? super T> list,T obj)
用指定的元素代替指定列表的所有元素。
    @Test
    public void fillTest(){
        List<String> list = new ArrayList();
        list.add("tangsan");
        list.add("bibidong");
        list.add("qiandaoliu");
        list.add("chenxin");
        list.add("mahongjun");
        list.add("qiandaoliu");
        System.out.println("填充前");
        System.out.println(list);
        System.out.println("填充后");
        Collections.fill(list, "xuebeng");
        System.out.println(list);
    }
输出内容:

填充前
[tangsan, bibidong, qiandaoliu, chenxin, mahongjun, qiandaoliu]
填充后
[xuebeng, xuebeng, xuebeng, xuebeng, xuebeng, xuebeng]

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值