_成绩排序
-
需求用TreeSet 集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合
要求:按总分从高到低出现
-
思路:
- 定义学生类
- 创建TreeSet集合对象,通多对比较器排序进行排序
- 创建学生对象
- 把学生对象添加到集合
- 遍历集合
-
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
_不重复的随机数
-
需求:编写一个程序,获取10个1-20之间的随机数,要求随机数不能重复,并在控制台输出
思路:
- 创建Set集合
- 创建随机数对象
- 判断集合长度是否小于10
- 是:产生一个随机数,添加到集合
- 回到3继续
- 遍历集合
-
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
_泛型概述和好处
- 泛型:是JDK5引入的特性,他提供了编译时类型安全监测的机制,该机制允许在编译时检测到非法的类型,它的本质是参数化的类型,也就是说所操作的数据类型被认定为一个参数,一提到参数,就是将类型由原来的具体的;类型参数化,然后在使用/调用死传入具体的类型,这种参数类型可以用在类/方法和接口中,分别被称为泛型类,泛型方法,泛型接口。
- 泛型定义格式:
- <类型>:指定一种类型的格式。这里的类型可以看成是形参
- <类型1,类型2…>: 指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
- 将来具体用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型
_泛型类
-
泛型类的定义格式:
- 格式:修饰符class 类名<类型>{}
- 范例:public class Generic{}
- 此处T可以随便写为任意标识,常见的如T,E,K,V等形式的参数常用于表示泛型
-
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
_泛型方法
-
泛型方法的定义格式:
- 格式:修饰符<类型>返回值类型 方法名(类型 变量名){}
- 范例:public void show(T t){}
-
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