栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

使用TreeSet对成绩排序

Java 更新时间:发布时间: 百科书网 趣学号

1)RankItem.java

package org.example.testtreeset;

public class RankItem {
    private String name;
    private int score;
    private int rid;

    public RankItem(String name, int score, int rid) {
        this.name = name;
        this.score = score;
        this.rid = rid;
    }

    @Override
    public String toString() {
        return "RankItem{" +
                "name='" + name + ''' +
                ", score=" + score +
                '}';
    }

    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 int getRid() {
        return rid;
    }

    public void setRid(int rid) {
        this.rid = rid;
    }
}

2)RankService.java

package org.example.testtreeset;

import java.util.Comparator;
import java.util.TreeSet;

public class RankService {
    private static TreeSet ts = new TreeSet<>(new Comparator() {
        @Override
        public int compare(RankItem o1, RankItem o2) {
            int diffScore = o1.getScore() - o2.getScore();
            int diffRid = o1.getRid() - o2.getRid();
            return diffScore == 0 ? diffRid : diffScore;
        }
    });

    public static void addRankItem(RankItem item) {
        ts.add(item);
    }

    public static void showRankInfo() {
        for (RankItem item : ts) {
            System.out.println(item);
        }
    }
}

3)Main.java

package org.example.testtreeset;

public class Main {
    public static void main(String[] args) {
        RankItem item = new RankItem("xx", 60, 1);
        RankItem item1 = new RankItem("jn", 100, 2);
        RankItem item2 = new RankItem("cx", 60, 3);
        RankItem item3 = new RankItem("a", 80, 4);

        RankService.addRankItem(item);
        RankService.addRankItem(item1);
        RankService.addRankItem(item2);
        RankService.addRankItem(item3);

        RankService.showRankInfo();
    }
}

总结:

可以看出Java中TreeSet的特性和redis中的有序集合是类似的,但是redis中的有序集合只能指定一个score字段,因此对于相同socre的,我们只能用socre的高几位和低几位来表示2个意思,拼起来为一个完成 的数字。

Treeset则需要自己实现比较函数,当score相同时,我们可以使用某个唯一的编号如:rid 进行排序即可。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/274951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号