zoukankan      html  css  js  c++  java
  • Java treeSet 集合 比较器 练习

    1,练习:程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印. 

    分析

    1,创建Scanner对象,键盘录入

    2,创建TreeSet集合对象,TreeSet集合中传入比较器

    3,无限循环不断接收整数,遇到quit退出,因为退出是quit,所以键盘录入的时候应该都以字符串的形式录入 

    4,判断是quit就退出,不是将其转换为Integer,并添加到集合中 

    5,遍历TreeSet集合并打印每一个元素

    import java.util.*;
    //倒叙比较器
    class MyComparator implements Comparator<Integer>{
    
        public int compare(Integer o1, Integer o2) {
            return o1 != o2 ? (o1 > o2 ? -1 : 1) : 0;
        }
    }
    
    public class Demo1 {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入数字,以quit结束:");
            String s = input.next();
            MyComparator mc = new MyComparator();
            TreeSet set = new TreeSet(mc);//默认排序效果是由小到大,需求是由大到小 comparable?>>>comparator
            while(!s.equals("quit")) {//只要不是quit就进入循环
                Integer i = new Integer(s);//字符串转Integer            
                set.add(i);
                s = input.next();//重新录入字符串
            }
            System.out.println(set);

    2,练习

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

    分析: 

     1,定义一个学生类,成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩

                               成员方法:空参,有参构造,有参构造的参数分别是姓名,语文成绩,数学成绩,英语成绩

                               toString方法,在遍历集合中的Student对象打印对象引用的时候会显示属性值

    2,键盘录入需要Scanner,创建键盘录入对象

    3,创建TreeSet集合对象,在TreeSet的构造函数中传入比较器,按照总分比较

    4,录入五个学生,所以以集合中的学生个数为判断条件,如果size是小于5就进行存储

    5,将录入的字符串切割,用逗号切割,会返回一个字符串数组,将字符串数组中从第二个元素转换成int数, 

    6,将转换后的结果封装成Student对象,将Student添加到TreeSet集合中

    7,遍历TreeSet集合打印每一个Student对象

    import java.util.Scanner;
    import java.util.TreeSet;
    class Student implements Comparable<Student>{
        public Student() {}
        public Student(String name, int yuwen, int shuxue, int yingyu) {
            this.name = name;
            this.yuwen = yuwen;
            this.shuxue = shuxue;
            this.yingyu = yingyu;
        }
        String name;
        private int yuwen;
        private int shuxue;
        private int yingyu;
        private int total;
        public String toString() {
            return "Student [name=" + name + ", yuwen=" + yuwen + ", shuxue=" + shuxue + ", yingyu=" + yingyu + ", total="
                    + total + "]";
        }
    public int compareTo(Student o) { this.total = this.yuwen + this.shuxue + this.yingyu; o.total = o.yuwen + o.shuxue + o.yingyu; return this.total != o.total ? (this.total > o.total ? -1 : 1) : 0; } } public class Demo2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("需要录入5名学生信息"); TreeSet<Student> set = new TreeSet(); for(int i = 1; i <= 5 ; i++) { System.out.println("录入第"+i+"名学生信息(姓名,语文成绩,数学成绩,英语成绩):"); String s = input.next(); String[] ss = s.split(","); Student stu = new Student(ss[0],Integer.parseInt(ss[1]),Integer.parseInt(ss[2]),Integer.parseInt(ss[3])); set.add(stu); } System.out.println(set);



  • 相关阅读:
    js,jQuery实现可关闭悬浮框广告特效,兼容(谷歌,火狐,Ie)
    各种选择框jQuery的选中方法
    表单校验demo
    两种方法实现城市级联菜单
    树形菜单
    匿名函数和鼠标移入移除事件
    多线程实例
    Lock锁
    Oracle语句
    Java NIO
  • 原文地址:https://www.cnblogs.com/nastu/p/12884869.html
Copyright © 2011-2022 走看看