java set 比较函数_Java treeSet 集合 比较器 练习

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

分析

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

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

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

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

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

import java.util.*;//倒叙比较器

class MyComparator implements Comparator{public intcompare(Integer o1, Integer o2) {return o1 != o2 ? (o1 > o2 ? -1 : 1) : 0;

}

}public classDemo1 {public static voidmain(String[] args) {

Scanner input= new Scanner(System.in);

System.out.println("请输入数字,以quit结束:");

String s=input.next();

MyComparator mc= newMyComparator();

TreeSetset = 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{publicStudent() {}public Student(String name, int yuwen, int shuxue, intyingyu) {this.name =name;this.yuwen =yuwen;this.shuxue =shuxue;this.yingyu =yingyu;

}

String name;private intyuwen;private intshuxue;private intyingyu;private inttotal;publicString toString() {return "Student [name=" + name + ", yuwen=" + yuwen + ", shuxue=" + shuxue + ", yingyu=" + yingyu + ", total="

+ total + "]";

}public intcompareTo(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 classDemo2 {public static voidmain(String[] args) {

Scanner input= new Scanner(System.in);

System.out.println("需要录入5名学生信息");

TreeSet set = newTreeSet();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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值