首页 > 代码库 > java 17 - 9 HashSet集合、TreeSet集合的练习

java 17 - 9 HashSet集合、TreeSet集合的练习

HashSet集合的练习

1
package zl_TreeSetTest; 2 /* 3 创建学生类 4 成员变量: 5 A:姓名 6 B:语文成绩 数学成绩 英语成绩 7 */ 8 public class Student { 9 private String name ;10 private int chinese;11 private int english;12 private int math;13 14 public Student() {15 super();16 // TODO Auto-generated constructor stub17 }18 19 20 @Override21 public String toString() {22 return "Student [name=" + name + ", chinese=" + chinese23 + ", english=" + english + ", math=" + math + "]";24 }25 26 27 public String getName() {28 return name;29 }30 public void setName(String name) {31 this.name = name;32 }33 public int getChinese() {34 return chinese;35 }36 public void setChinese(int chinese) {37 this.chinese = chinese;38 }39 public int getEnglish() {40 return english;41 }42 public void setEnglish(int english) {43 this.english = english;44 }45 public int getMath() {46 return math;47 }48 public void setMath(int math) {49 this.math = math;50 }51 52 //按照总分从高到低输出到控制台53 public int getsum (){54 int sum = this.chinese + this.english + this.math;55 return sum;56 }57 58 59 60 61 }

 

TreeSet集合的练习:

  需求: 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台 

  分析:
    A:定义学生类
    B:创建一个TreeSet集合 使用内部匿名方法实现
    C:总分从高到底如何实现呢?
    D:键盘录入5个学生信息
    E:遍历TreeSet集合

 

学生类:

 1 package zl_TreeSetTest; 2 /* 3      创建学生类 4      成员变量: 5          A:姓名 6          B:语文成绩   数学成绩  英语成绩    7  */ 8 public class Student { 9         private String name ;10         private int chinese;11         private int english;12         private int math;13         14         public Student() {15             super();16             // TODO Auto-generated constructor stub17         }18         19         20         @Override21         public String toString() {22             return "Student [name=" + name + ", chinese=" + chinese23                     + ", english=" + english + ", math=" + math + "]";24         }25 26 27         public String getName() {28             return name;29         }30         public void setName(String name) {31             this.name = name;32         }33         public int getChinese() {34             return chinese;35         }36         public void setChinese(int chinese) {37             this.chinese = chinese;38         }39         public int getEnglish() {40             return english;41         }42         public void setEnglish(int english) {43             this.english = english;44         }45         public int getMath() {46             return math;47         }48         public void setMath(int math) {49             this.math = math;50         }51 52         //按照总分从高到低输出到控制台53         public int getsum (){54             int sum = this.chinese + this.english + this.math;55             return sum;56         }57         58         59         60         61 }

 

测试类:

 1 package zl_TreeSetTest; 2  3 import java.util.Comparator; 4 import java.util.Scanner; 5 import java.util.TreeSet; 6  7 /* 8  键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台 9 10  分析:11  A:定义学生类12  B:创建一个TreeSet集合   使用内部匿名方法实现13  C:总分从高到底如何实现呢?        14  D:键盘录入5个学生信息15  E:遍历TreeSet集合16  */17 public class StudentTest {18 19     public static void main(String[] args) {20         // 创建一个TreeSet集合21         TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {22             public int compare(Student s1, Student s2) {23                 // 首先比较总分24                 int num1 = s2.getsum() - s2.getsum();25                 // 总分相同,但语文成绩未必相同26                 int num2 = num1 == 0 ? s1.getChinese() - s2.getChinese() : num1;27                 // 语文成绩也相同的话,但是英语成绩未必也相同28                 int num3 = num2 == 0 ? s1.getEnglish() - s2.getEnglish() : num2;29                 // 。。。数学成绩未必相同:30                 int num4 = num3 == 0 ? s1.getMath() - s2.getMath() : num3;31                 // 成绩方面都相同的话,但是你名字肯定不相同吧。。32                 int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName())33                         : num4;34 35                 return num5;36             }37 38         });39 40         System.out.println("--------录入学生信息--------");41         for(int x = 1; x<= 5 ;x++) {42             43             // 键盘录入44             Scanner sc = new Scanner(System.in);45             46             System.out.println("请输入第" + x + "位学生的名字:");47             String name = sc.nextLine();48             System.out.println("请输入第" + x + "位学生的语文成绩:");49             int chinese = sc.nextInt();50             System.out.println("请输入第" + x + "位学生的数学成绩:");51             int Math = sc.nextInt();52             System.out.println("请输入第" + x + "位学生的英语成绩:");53             int english = sc.nextInt();54 55             // 把数据录入学生类中56             Student s = new Student();57             s.setName(name);58             s.setChinese(chinese);59             s.setMath(Math);60             s.setEnglish(english);61 62             // 在把学生类放进集合中63             ts.add(s);64 65         }66 67         // 进行遍历68         for (Student s : ts) {69             System.out.println(s.getChinese() + "\t" + s.getMath() + "\t"70                     + s.getEnglish() + "\t" + s.getsum());71         }72 73     }74 75 }

 

java 17 - 9 HashSet集合、TreeSet集合的练习