集合应用练习

这篇博客介绍了如何使用Java集合框架解决实际问题,包括根据成绩排序,计算两个有序范围集合的交集,以及从消费记录中找出消费次数最多及最高消费金额的用户。通过具体实例和实现步骤详细阐述了解决方案。
摘要由CSDN通过智能技术生成
1.某班级有 40 个学生,学号为 180201-180240,全部参加 Java 集合阶段检测,给出所有同学的成绩(可随机产生,范围为 50-100),请编写程序将本班各位同学成绩从高往低排序打印输出,注:成绩相同时学号较小的优先打印要求:打印的信息包含学号、姓名(姓名统一为“同学 J”[J=10,11,12。。。])和成绩。
  • 思路分析:
    1.随机产生所有同学的成绩:Math.random()
    2.所有同学学号,姓名,成绩存储:ArrayList /TreeSet/PriorityQueue;
    3.成绩进行从高到低比较:实现比较器类,Collections.sort()
  • 实现:
//将学生信息封装成一个类
public class Student {
   
    private int id;
    private String name;
    private int score;

    public Student(int id,String name,int score){
   
        this.id = id;
        this.name = name;
        this.score = score;
    }

    public int getId() {
   
        return id;
    }

    public void setId(int id) {
   
        this.id = id;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public int getScore() {
   
        return score;
    }

    public void setScore(int score) {
   
        this.score = score;
    }
}
public class IOTest01 {
   
    private ArrayList<Student> arrayList = new ArrayList<Student>();
    public void save(){
   
        Random random = new Random();
        //保存40位同学的姓名、学号、成绩
        for (int i = 0,j = 10; i <= 40; i++) {
   
            int id = 180201 + i;
            String name = "同学" + j++;
            int score = random.nextInt(51) + 50;
            this.arrayList.add(new Student(id,name,score));
        }
    }
    public void sort(){
   

        //进行排序,成绩按照从高往低排序,成绩相同时学号小的排在前优先打印
        Comparator<Student> comparator = new Comparator<Student>() {
   
            @Override
            public int compare(Student o1, Student o2) {
   
                return o2.getScore()> o1.getScore() ? 1 : o2.getScore() < o1.getScore() ?
                        -1 : o1.getId() - o2.getId();
            }
        };
        Collections.sort(arrayList,comparator);
    }
    public void print(){
   
        Iterator<Student> iterator = this.arrayList.iterator();
        while (iterator.hasNext()){
   
            Student value = iterator.next();
            System.out.println("学号:"+ value.getId() +"姓名:"
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值