【JAVA】Collections类的其他方法

本文深入探讨Java中Collections类的使用,包括反转、随机打乱、交换、旋转等常用方法,以及如何利用Lambda表达式进行自定义排序。通过实例演示了如何对不同类型的集合进行操作,如字符串和自定义对象的列表。

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

Collections类还有其他的方法,这里我们值列举几个常用的方法:

//反转
Collections.reverse(s);

//随机打乱
Collections.shuffle(s);
//交换
Collections.swap(s, 2, 5);
//旋转
Collections.rotate(s, 3);
//判断两个集合有没有交集
Collections.disjoint();
package 归并排序;

import edu.xalead.Student;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 测试Collections
 */
public class CollectionTest {

    @Test
    public void test1() {
List<String> list=new ArrayList<>();

        public final class String
                implements java.io.Serializable, Comparable<java.lang.String>, CharSequence {
            /** The value is used for character storage. */
        这里有一个要求,即要能够是先比较大小的规范。
        而字符串类是final的,所以这里就阻止了继承。
        但是String类里头实现了Comparable接口,
        所以这里我们就不用再去写Comparable接口了。

        可是,如果接口我们自己没有实现的话,
        我们就需要实现Comparator接口。
        而我们可以用Lambda表达式
        List<edu.xalead.Student> list = new ArrayList<>();
        //Lambda表达式
        Collections.sort(list, (o1, o2) -> {
            if (o1 instanceof edu.xalead.Student && o2 instanceof edu.xalead.Student) {
                edu.xalead.Student s1 = (edu.xalead.Student) o1;
                edu.xalead.Student s2 = (Student) o2;
                if (s1.getId() < s2.getId()) {
                    return -1;
                } else if (s1.getId() > s2.getId()) {
                    return 1;
                }
                return 0;
            }
            throw new RuntimeException("类型不匹配");
        });
    }

    @Test
    public void test2() {
        List<Integer> s = new ArrayList<>();
        s.add(20);
        s.add(30);
        s.add(40);
        s.add(21);
        s.add(76);
        s.add(34);
        s.add(56);
        System.out.println("输入:"+s);

        //反转
        Collections.reverse(s);
        System.out.println("反转:"+s);

        //排序
        Collections.sort(s);
        System.out.println("排序:"+s);

        //随机打乱
        Collections.shuffle(s);
        System.out.println("随机打乱:"+s);

        //交换
        Collections.swap(s, 2, 5);
        System.out.println("交换第三个和第六个元素:"+s);

        //旋转
        Collections.rotate(s, 3);
        System.out.println("旋转(从第二个元素往后的元素依次排到第一个元素前面):"+s);

        //Collections还有个Arrays类,
        //它是用来操作数组的。
        //而Collections主要是操作集合的。

        //判断两个集合有没有交集
        //Collections.disjoint();

        //要继承Comparable,因为是二分查找,需要先排序。
        //Collections.binarySearch();
    }
}
//LinkedHasSet,LinkedHasMap
//存的时候用哈希表存,排的时候用链表排。
输入:[20, 30, 40, 21, 76, 34, 56]
反转:[56, 34, 76, 21, 40, 30, 20]
排序:[20, 21, 30, 34, 40, 56, 76]
随机打乱:[21, 76, 56, 30, 20, 40, 34]
交换第三个和第六个元素:[21, 76, 40, 30, 20, 56, 34]
旋转(从第二个元素往后的元素依次排到第一个元素前面):[20, 56, 34, 21, 76, 40, 30]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-_星耀_-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值