【Java基础】Collections集合概述和使用、ArrayList集合存储学生并排序及斗地主案例

简介: 【Java基础】Collections集合概述和使用、ArrayList集合存储学生并排序及斗地主案例

一、Collections概述和使用

Collection类的作用:是针对集合操作的工具类


Collection类常用方法:

方法名 说明
public static void sort(List list) 将指定的列表按升序排序
public static void reverse(List<?> list) 反转指定列表中元素的顺序
public static void shuffle(List<?> list) 使用默认的随机 

示例代码:

public class CollectionsDemo01 { 
    public static void main(String[] args) { 
        //创建集合对象 
        List<Integer> list = new ArrayList<Integer>(); 
        //添加元素 
        list.add(30); 
        list.add(20); 
        list.add(50); 
        list.add(10); 
        list.add(40); 
        //public static <T extends Comparable<? super T>> void sort•(List<T> list):将指定的列表按升序排序
         Collections.sort(list); 
        //public static void reverse•(List<?> list):反转指定列表中元素的顺序 
         Collections.reverse(list); 
        //public static void shuffle•(List<?> list):使用默认的随机源随机排列指定的列表 
        Collections.shuffle(list); 
        System.out.println(list); 
    } 
}

二、ArrayList集合存储学生并排序

需求:


ArrayList存储学生对象,使用Collections对ArrayList进行排序


代码实现:


学生类

public class Student { 
    private String name; 
    private int age; 
    public Student() { 
    }
    public Student(String name, int age) { 
        this.name = name; 
        this.age = age; 
    }
    public String getName() { 
        return name; 
    }
    public void setName(String name) { 
        this.name = name; 
    }
    public int getAge() { 
        return age; 
    }
    public void setAge(int age) { 
        this.age = age; 
    } 
}

测试类:

public class CollectionsDemo02 { 
    public static void main(String[] args) { 
        //创建ArrayList集合对象 
        ArrayList<Student> array = new ArrayList<Student>(); 
        //创建学生对象 
        Student s1 = new Student("linqingxia", 30); 
        Student s2 = new Student("zhangmanyu", 35); 
        Student s3 = new Student("wangzuxian", 33); 
        Student s4 = new Student("liuyan", 33); 
        //把学生添加到集合 
        array.add(s1); 
        array.add(s2); 
        array.add(s3); 
        array.add(s4); 
        //使用Collections对ArrayList集合排序 
        //sort•(List<T> list, Comparator<? super T> c) 
        Collections.sort(array, new Comparator<Student>() { 
            @Override 
            public int compare(Student s1, Student s2) { 
                //按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序 
                int num = s1.getAge() - s2.getAge(); 
                int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num; 
                return num2; 
            } 
        }); 
        //遍历集合 
        for (Student s : array) { 
            System.out.println(s.getName() + "," + s.getAge()); 
        } 
    } 
}

三、斗地主案例

需求:


通过程序实现斗地主过程中的洗牌,发牌和看牌。要求:对牌进行排序


代码实现:

public class PokerDemo { 
    public static void main(String[] args) { 
        //创建HashMap,键是编号,值是牌 
        HashMap<Integer, String> hm = new HashMap<Integer, String>(); 
        //创建ArrayList,存储编号 
        ArrayList<Integer> array = new ArrayList<Integer>(); 
        //创建花色数组和点数数组 
        String[] colors = {"♦", "♣", "♥", "♠"}; 
        String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; 
        //从0开始往HashMap里面存储编号,并存储对应的牌。同时往ArrayList里面存储编号 
        int index = 0; 
        for (String number : numbers) { 
            for (String color : colors) { 
                hm.put(index, color + number); 
                array.add(index); 
                index++; 
            } 
        }
        hm.put(index, "小王"); 
        array.add(index); 
        index++; 
        hm.put(index, "大王"); 
        array.add(index); 
        //洗牌(洗的是编号),用Collections的shuffle()方法实现 
        Collections.shuffle(array); 
        //发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收) 
        TreeSet<Integer> lqxSet = new TreeSet<Integer>(); 
        TreeSet<Integer> lySet = new TreeSet<Integer>(); 
        TreeSet<Integer> fqySet = new TreeSet<Integer>(); 
        TreeSet<Integer> dpSet = new TreeSet<Integer>();
        for (int i = 0; i < array.size(); i++) { 
            int x = array.get(i); 
            if (i >= array.size() - 3) { 
                dpSet.add(x); 
            } else if (i % 3 == 0) { 
                lqxSet.add(x); 
            } else if (i % 3 == 1) { 
                lySet.add(x); 
            } else if (i % 3 == 2) { 
                fqySet.add(x); 
            } 
        }
        //调用看牌方法 
        lookPoker("林青霞", lqxSet, hm); 
        lookPoker("柳岩", lySet, hm); 
        lookPoker("风清扬", fqySet, hm); 
        lookPoker("底牌", dpSet, hm); 
    }
    //定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) 
    public static void lookPoker(String name, TreeSet<Integer> ts,HashMap<Integer,String> hm) { 
        System.out.print(name + "的牌是:"); 
        for (Integer key : ts) { 
            String poker = hm.get(key); 
            System.out.print(poker + " "); 
        }
        System.out.println(); 
    } 
}
目录
相关文章
|
1月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
192 100
|
1月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
210 101
|
16天前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
48 7
|
1月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
存储 搜索推荐 算法
十大排序算法(java实现)(二)
十大排序算法(java实现)(二)
|
搜索推荐 算法 Java
十大排序算法(java实现)(一)
十大排序算法(java实现)(一)
124 3
|
搜索推荐 算法 Java
排序算法及java实现
排序算法及java实现
|
搜索推荐 算法 Java
七大基于比较的排序算法(JAVA)
冒泡排序 堆排序 插入排序 希尔排序 归并排序 快速排序 选择排序 
124 0