0
点赞
收藏
分享

微信扫一扫

Day 47

思考的鸿毛 2022-04-03 阅读 36
java

_成绩排序

  1. 需求用TreeSet 集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合

    要求:按总分从高到低出现

  2. 思路:

    • 定义学生类
    • 创建TreeSet集合对象,通多对比较器排序进行排序
    • 创建学生对象
    • 把学生对象添加到集合
    • 遍历集合
  3. package demo27;
    
    import java.util.Comparator;
    import java.util.TreeSet;
    
    public class TreeSetDemo_01 {
        public static void main(String[] args) {
            /*
            需求用TreeSet 集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合
            要求:按总分从高到低出现
    
            思路:
                - 定义学生类
                - 创建TreeSet集合对象,通多对比较器排序进行排序
                 - 创建学生对象
                - 把学生对象添加到集合
                - 遍历集合
             */
            TreeSet<Student> t = new TreeSet<>(new Comparator<Student>() {
                @Override
                public int compare(Student s1, Student s2) {
                    int num01 = s2.sum() - s1.sum();
                    int num02;
                    if (num01 == 0) {
                        num02 = s1.getName().compareTo(s2.getName());
                        return num02;
                    } else {
                        return num01;
                    }
    
                }
            });
    
            // 创建学生对象
            Student s1 = new Student("晓君", 90, 92, 80);
            Student s2 = new Student("李杰杰", 95, 100, 70);
            Student s3 = new Student("陈晓", 90, 87, 90);
            Student s4 = new Student("王明", 98, 99, 95);
            Student s5 = new Student("张明", 98, 99, 95);
    
            // 添加学生对象
            t.add(s1);
            t.add(s2);
            t.add(s3);
            t.add(s4);
            t.add(s5);
    
            // 遍历集合
            for (Student s : t) {
                System.out.println(s.getName()+","+s.getChinese()+","+s.getMath()+","+s.getEnglish()+","+s.sum());
            }
    
        }
    
    }
    -----------------------------------
    package demo27;
    
    public class Student {
    
        public Student() {
        }
        private String name;
        private int Chinese;
        private int Math;
        private int English;
    
        public Student(String name, int Chinese, int Math, int English) {
            this.name = name;
            this.Chinese = Chinese;
            this.Math= Math;
            this.English = English;
    
        }
    
    
        public  int sum() {
            int num = this.Chinese + this.Math + this.English;
            return num;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getChinese() {
            return Chinese;
        }
    
        public void setChinese(int chinese) {
            Chinese = chinese;
        }
    
        public int getMath() {
            return Math;
        }
    
        public void setMath(int math) {
            Math = math;
        }
    
        public int getEnglish() {
            return English;
        }
    
        public void setEnglish(int english) {
            English = english;
        }
    }
    --------------------------------------
    张明,98,99,95,292
    王明,98,99,95,292
    陈晓,90,87,90,267
    李杰杰,95,100,70,265
    晓君,90,92,80,262
    
    Process finished with exit code 0
    

_不重复的随机数

  1. 需求:编写一个程序,获取10个1-20之间的随机数,要求随机数不能重复,并在控制台输出

    思路:

    • 创建Set集合
    • 创建随机数对象
    • 判断集合长度是否小于10
      • 是:产生一个随机数,添加到集合
      • 回到3继续
    • 遍历集合
  2. package demo28;
    
    import java.util.*;
    
    /*
        需求:编写一个程序,获取10个1-20之间的随机数,要求随机数不能重复,并在控制台输出
    
        思路:
    
            - 创建Set集合
            - 创建随机数对象
            - 判断集合长度是否小于10
                - 是:产生一个随机数,添加到集合
                - 回到3继续
            - 遍历集合
     */
    public class SetDemo_01 {
        public static void main(String[] args) {
            Set<Integer> s = new HashSet<>();
    
    
            // 创建随机数对象
            Random r = new Random();
            while (s.size() < 10) {
                s.add(r.nextInt(20));
            }
    
    //        // 构造迭代器
    //        Iterator<Integer> it = s.iterator();
    //
    //        // 将集合放到数组 arr01 中
    //        int[] arr01 = {s.size()+1} ;
    //        int i = 0;
    //        while (it.hasNext()) {
    //            arr01[i] = it.next();
    //            i++;
    //        }
    
            // 遍历集合
            for (int num : s) {
                System.out.println(num);
            }
            System.out.println("----------------");
    
            // 产生升序的随机数
            Set<Integer> s1 = new TreeSet<>();
            while (s1.size() < 10) {
                s1.add(r.nextInt(20));
            }
    
            // 遍历集合
            for (int num : s1) {
                System.out.println(num);
            }
    
        }
    }
    =================================
    0
    1
    2
    18
    19
    5
    6
    8
    9
    15
    ----------------
    2
    4
    5
    8
    9
    11
    14
    17
    18
    19
    
    Process finished with exit code 0
    
    

_泛型概述和好处

  1. 泛型:是JDK5引入的特性,他提供了编译时类型安全监测的机制,该机制允许在编译时检测到非法的类型,它的本质是参数化的类型,也就是说所操作的数据类型被认定为一个参数,一提到参数,就是将类型由原来的具体的;类型参数化,然后在使用/调用死传入具体的类型,这种参数类型可以用在类/方法和接口中,分别被称为泛型类,泛型方法,泛型接口。
  2. 泛型定义格式:
    • <类型>:指定一种类型的格式。这里的类型可以看成是形参
    • <类型1,类型2…>: 指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
    • 将来具体用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型

_泛型类

  1. 泛型类的定义格式:

    • 格式:修饰符class 类名<类型>{}
    • 范例:public class Generic{}
      • 此处T可以随便写为任意标识,常见的如T,E,K,V等形式的参数常用于表示泛型
  2. package demo29;
    
    public class GenericDemo_01 {
        public static void main(String[] args) {
    
            Generic<String> g = new Generic<>();
            g.goT("hello world java");
    
            g.go("你好");
            System.out.println("-------------------");
    
            Generic<Integer> g1 = new Generic<>();
            g1.goT(20);
    
            g1.go(20);
        }
    }
    -------------------------------
    package demo29;
    /*
        创建泛型类
     */
    public class Generic<T> {
        private T t;
    
        public T goT( T e) {
            System.out.println(e);
            return e;
        }
    
        public void go(T e) {
            System.out.println("您输入的是:" + e);
        }
    }
    ================================
    hello world java
    您输入的是:你好
    -------------------
    20
    您输入的是:20
    
    Process finished with exit code 0
    

_泛型方法

  1. 泛型方法的定义格式:

    • 格式:修饰符<类型>返回值类型 方法名(类型 变量名){}
    • 范例:public void show(T t){}
  2. package demo29;
    
    public class GenericDemo_01 {
        public static void main(String[] args) {
    
            Generic<String> g = new Generic<>();
            g.goT("hello world java");
    
            g.go("你好");
            System.out.println("-------------------");
    
            Generic<Integer> g1 = new Generic<>();
            g1.goT(20);
    
            g1.go(20);
    
            System.out.println("------泛型方法--------");
    
            Generics G1 = new Generics();
            G1.run("您好");
    
            G1.run(120);
    
            G1.run(true);
    
            System.out.println("---------------------");
        }
    }
    -----------------------------------
    package demo29;
    
    public class Generics {
        public <T> void run(T e) {
            System.out.println("您输入的是:" + e);
        }
    }
    =================================
    hello world java
    您输入的是:你好
    -------------------
    20
    您输入的是:20
    ------泛型方法--------
    您输入的是:您好
    您输入的是:120
    您输入的是:true
    ---------------------
    
    Process finished with exit code 0
    
举报

相关推荐

0 条评论