java 泛型 集合嵌套 Collections中的sort(list)方法

一、重点内容泛型

1.增加了代码安全性
* 2.省去了强制转换的麻烦(向下转型)
*/

public class Demo01 {
    public static void main(String[] args) {
        // fun1();
        // fun2();
        // fun3();

        // 泛型类
        // 泛型类是在创建对象的时候 给泛型赋类型
        Worker<String> worker = new Worker<>();
        worker.setT("haha");
        String t = worker.getT();    
        System.out.println(worker.getT());
    }

    private static void fun3() {
        // 泛型的由来
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("跳跳", "15"));
        list.add(new Student("好好", "15"));
        list.add(new Student("带带", "15"));

        // 泛型可以将 运行时的错误 转到编译器
//      Worker worker  = (Worker)list.iterator().next();
//      worker.work();
    }

    private static void fun2() {
        // 需求:集合中保存了 3个学生对象 迭代器遍历(使用泛型)
        // 在JDK1.7 菱形泛型
        // 后面的泛型 可以不写 如果不写 默认和声明时泛型一致
        // 如果前后泛型都写 必须保存一致
        ArrayList<Student> list1 = new ArrayList<>();
        list1.add(new Student("跳跳", "15"));
        list1.add(new Student("好好", "15"));
        list1.add(new Student("带带", "15"));
        ListIterator<Student> listIterator = list1.listIterator();
        while (listIterator.hasNext()) {
            Student next = listIterator.next();
            System.out.println(next);
        }
    }

    /*
     * 集合保存泛型是字符串的
     */
    private static void fun1() {
        // 声明一个集合 保存a b c d 迭代器遍历
        // 泛型 声明 集合中保存的元素是什么类型的
        ArrayList<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        ListIterator<String> listIterator = list.listIterator();
        // 正向遍历
//      while (listIterator.hasNext()) {
//          String next = listIterator.next();
//          System.out.println(next);
//      }
        // 逆向遍历
        // 判断前一个元素是否有值
        while (listIterator.hasPrevious()) {
            // 取出前一个元素
            String previous = listIterator.previous();
            System.out.println(previous);
        }
    }
}

二、集合嵌套

public class Demo05 {
    public static void main(String[] args) {
        // 需求:一个java学科 有2个班 每个班里有2个学生
        // 用集合来表示
        // 我有一个通讯录 26个组
        // a b ...z
        // 每组9人

        // 创建一个学科的集合
        // 学科中装了两个小集合,
        // 小集合里面装了学生
        ArrayList<ArrayList<Student>> subjects = new ArrayList<>();
        // 创建小集合
        ArrayList<Student> classes1 = new ArrayList<>();
        // 把学生装进小集合
        classes1.add(new Student("明明", "15"));
        classes1.add(new Student("天天", "16"));

        // 创建班2
        ArrayList<Student> classes2 = new ArrayList<>();
        // 把学生装进小集合
        classes2.add(new Student("发发", "19"));
        classes2.add(new Student("财财", "18"));

        // 把班放进学科
        subjects.add(classes1);
        subjects.add(classes2);
        // 遍历打印
        // 第一层把班找出来
        for (ArrayList<Student> classes : subjects) {
            // 第二层 把班里学生找出来
            for (Student student : classes) {
                System.out.println(student);
            }
            System.out.println();
        }
    }
}

三、Collections中的sort(list)方法
这个方法是系统提供的排序方法
* 但是 按什么去排序 系统不知道你要怎么排序
* 这时系统给你提供一个接口 让你去实现这个接口
* 接口中 你要写排序规则(回调思想)
*
* 集合中盛放的什么对象 就让该对象去实现这个接口(排谁谁实现)
*
* 使用Collections中的sort方法排序步骤
* 1.让集合中被排序的对象 的类 去实现Comparable接口
* 2.实现接口中 的抽象方法(排序是按什么规则的方法)
* 3.编写排序规则
* 4.调用Collections.sort测试

ublic class Demo04 {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("a","15"));
        students.add(new Student("c","18"));
        students.add(new Student("d","14"));
        students.add(new Student("e","16"));
        students.add(new Student("f","17"));
        // 调用系统的排序方法
        // (底层调用了你实现接口中的排序规则方法)
        Collections.sort(students);
        System.out.println(students);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值