Collections工具类

文章介绍了JavaCollectionsAPI中的sort(),shuffle(),binarySearch()等方法,展示了如何对ArrayList进行排序、随机化和查找,以及在实际场景中如斗地主游戏中的应用。

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

Collections工具类

调用Collections类里的sort方法,可进行排序
package eight.collections;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Demo01 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();//有序但无排序
        list.add(342);
        list.add(38);
        list.add(4355555);
        list.add(685);
        System.out.println(list);
        Collections.sort(list);//调用Collections类里的sort方法,可进行排序
        //注意:使用sort方法实现排序,集合元素必须实现Comparable接口(自定义的类需要手动实现)
        System.out.println(list);
    }
}

模拟抽取幸运用户,奖池中包含1-16的数字,通过打乱数字顺序,抽取第7个位置的数字,作为幸运用户。

package eight.collections;

import java.util.ArrayList;
import java.util.Collections;

public class Demo02 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i <=16; i++) {
            list.add(i);
        }
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println(list.get(6));
    }
}

使用binarySearch方法实现查找元素的下标

package eight.collections;

import java.util.ArrayList;
import java.util.Collections;

public class Demo03 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);//0
        list.add(5);//1
        list.add(7);//2
        list.add(11);//3
        list.add(15);//4

        System.out.println(Collections.binarySearch(list,15));
    }/*被查找的列表中,列表元素必须按照升序排序
    返回值:包含查找对象,返回对象第一次出现的下标
    不包含查找对象,则返回-(最近插入点+1)
    如果列表中的所有元素都小于指定的键,则返回 list.size()*/
}
package eight.collections;

import java.util.ArrayList;
import java.util.Collections;

public class StudentTest {
    public static void main(String[] args) {
        Student s1 = new Student("杨幂",37);
        Student s2 = new Student("周也",27);
        Student s3 = new Student("成龙",70);
        Student s4 = new Student("王源",25);
        ArrayList<Student> al = new ArrayList<>();
        al.add(s1);
        al.add(s2);
        al.add(s3);
        al.add(s4);
        //调用Collections类里的sort方法,可进行排序


        Collections.sort(al);
        System.out.println(al);
        //注意:使用sort方法实现排序,集合元素必须实现Comparable接口(自定义的类需要手动实现)

        //调用Collections类里的reverse方法,可进行反转
        Collections.reverse(al);
        System.out.println(al);


        //随机
        Collections.shuffle(al);
        System.out.println(al);

    }
}

max获取最大元素,min获取最小元素

package eight.collections2;

import java.util.ArrayList;
import java.util.Collections;

public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("秦岚", 40);
        Student s2 = new Student("辛芷蕾", 35);
        Student s3 = new Student("赵昭仪", 26);
        ArrayList<Student> l = new ArrayList<>();
        l.add(s1);
        l.add(s2);
        l.add(s3);
        System.out.println(l);
        //排序
        Collections.sort(l);
        System.out.println(l);
        //调用binarySearch()时,将指定学生的对象作为参数传递
        System.out.println(Collections.binarySearch(l,s1));
        //max获取最大元素
        System.out.println(Collections.max(l));
        //min获取最小元素
        System.out.println(Collections.min(l));
    }
}
package eight.collections2;

public class Student implements Comparable<Student>{
    @Override
    public int compareTo(Student o) {
        return this.Score-o.Score;
    }

    private String name;
    private int Score;

    public Student() {
    }

    public Student(String name, int score) {
        this.name = name;
        Score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", Score=" + Score +
                '}';
    }
}

查找子列表第一次出现的起始位置,没有则返回-1

查找子列表最后一次出现的位置,没有则返回-1

package eight.collections2;

import java.util.ArrayList;
import java.util.Collections;

public class Demo01 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("d");
        list2.add("b");
        //查找子列表第一次出现的起始位置,没有则返回-1
        System.out.println(Collections.indexOfSubList(list,list2));
        //查找子列表最后一次出现的位置,没有则返回-1
        System.out.println(Collections.lastIndexOfSubList(list,list2));


    }
}

实现斗地主
package eight.collections2;

import java.util.ArrayList;
import java.util.Collections;

//实现斗地主
public class Demo02 {
    public static void main(String[] args) {
        String[] p = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        String[] c = {"♥","♦","♣","♠"};
        ArrayList<String> list = new ArrayList<String>();
        //使用foreach 拼接
        for (String s1 : p){
            for (String s2 : c){
                list.add(s2+s1);//加号拼接字符串
            }
        }
        //添加大王小王
        list.add("大王");
        list.add("小王");
        //洗牌
        Collections.shuffle(list);
        //发牌
        ArrayList<String> longlong = new ArrayList<>();
        ArrayList<String> kunkun = new ArrayList<>();
        ArrayList<String> xinxin = new ArrayList<>();
        ArrayList<String> dp = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (i>= list.size()-3){//如果i>=54,-3   51
                dp.add(list.get(i));//获取3张牌
            }else if (i%3==0){//模余3=0给龙龙
                longlong.add(list.get(i));
            }else if (i%3==1) {//模余3=1给坤坤
                kunkun.add(list.get(i));
            }else{//其余给欣欣
                xinxin.add(list.get(i));
            }
        }
        System.out.println(dp);
        System.out.println(longlong);
        System.out.println(kunkun);
        System.out.println(xinxin);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值