精华内容
下载资源
问答
  • } /** * 根据学号查询该学生的排名 * @param list * @param studentCode * @return */ private static int getSort(List list, String studentCode) { //因为是排名,所以降序排序 Collections.sort...

    以下供参考:package com.test;

    public class Student {

    /**

    * id

    */

    private String id;

    /**

    * 学号

    */

    private String code;

    /**

    * 姓名

    */

    private String name;

    /**

    * 成绩

    */

    private float score;

    public String getId() {

    return id;

    }

    public void setId(String id) {

    this.id = id;

    }

    public String getCode() {

    return code;

    }

    public void setCode(String code) {

    this.code = code;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public float getScore() {

    return score;

    }

    public void setScore(float score) {

    this.score = score;

    }

    public Student(String id, String code, String name, float score) {

    super();

    this.id = id;

    this.code = code;

    this.name = name;

    this.score = score;

    }

    public Student() {

    super();

    }

    }

    package com.test;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    public class Test {

    public static void main(String[] args) {

    Student a = new Student("1", "001", "张三", 90.1f);

    Student b = new Student("2", "002", "李四", 70.2f);

    Student c = new Student("3", "003", "王五", 80.3f);

    Student d = new Student("4", "004", "赵六", 60.4f);

    Student e = new Student("5", "005", "钱七", 50.5f);

    List list = new ArrayList();

    list.add(a);

    list.add(b);

    list.add(c);

    list.add(d);

    list.add(e);

    float avg = getAvg(list);

    System.out.println("平均分为: " + avg);

    int sort = getSort(list, "003");

    System.out.println("排名为: " + sort);

    }

    /**

    * 根据学号查询该学生的排名

    * @param list

    * @param studentCode

    * @return

    */

    private static int getSort(List list, String studentCode) {

    //因为是排名,所以降序排序

    Collections.sort(list, new Comparator() {

    @Override

    public int compare(Student o1, Student o2) {

    if (o1.getScore() > o2.getScore()) {

    return -1;

    } else if (o1.getScore() == o2.getScore()) {

    return 0;

    } else {

    return 1;

    }

    }

    });

    int sort = 0;

    //因为list从0开始,所以要+1

    for (int i = 0; i 

    if(list.get(i).getCode().equals(studentCode)){

    sort = i+1;

    break;

    }

    }

    return sort;

    }

    /**

    * 传入list查询平均分

    * @param list

    * @return

    */

    private static float getAvg(List list) {

    int count = list.size();

    float totalScore = 0f;

    for (Student student : list) {

    totalScore += student.getScore();

    }

    float avg = totalScore / count;

    return avg;

    }

    }

    输出结果:平均分为: 70.3

    排名为: 2

    展开全文
  • Java计算排名通用方法

    千次阅读 2020-04-03 14:46:12
    //该方法可用于分数排名,购买量排名等排名计算操作 //传入需要处理的集合和数字 public int getClassRank(List<BuyerCountRanking> list,double tonSum){ ArrayList<Double> arrayList = new ...
    	//该方法可用于分数排名,购买量排名等排名计算操作
    	//传入需要处理的集合和数字
        public int getClassRank(List<BuyerCountRanking> list,double tonSum){
            ArrayList<Double> arrayList = new ArrayList();
            Map map = new HashMap();
            //将需要排序的字段放入集合
            for(int p = 0; p < list.size(); p++){
                arrayList.add( Double.valueOf(list.get(p).getTonSum()));
            }
            //以分数为key,循坏下标为value生成map
            for (int i = 0; i < arrayList.size() ; i++) {
                if(i == 0){
                    map.put(arrayList.get(0),0 + 1);
                }
                if(!map.containsKey(arrayList.get(i))){
                    map.put(arrayList.get(i),i+1);
                }
            }
            //从map中取得对应的位置
            int rank = (int) map.get(tonSum);
            return rank;
        }
    
    展开全文
  • 字段类型说明备注type枚举值数据类别有多种数据类型num浮点数积分值index长整型排名位置uuid字符型业务唯一键一个用户的唯一性标识A表数据原料出处:B,C,D,E表。num 是根据uuid从B,C,D,E表中各取一个字段,按照一定...

    场景:A表,汇总数据计算目标表。

    字段

    类型

    说明

    备注

    type

    枚举值

    数据类别

    有多种数据类型

    num

    浮点数

    积分值

    index

    长整型

    排名位置

    uuid

    字符型

    业务唯一键

    一个用户的唯一性标识

    A表数据原料出处:B,C,D,E表。

    num 是根据uuid从B,C,D,E表中各取一个字段,按照一定公式,计算而得出来。

    A表中,每种type的目前潜在数据量是100W左右,共计十几种type.

    —————————————————————————————————————————

    业务处理流程(分批计算)

    1.第一次计算:数据计算

    每批计算5W条数据,将5W的数据插入A表;

    再处理下一批,直到所有数据处理完成。

    2.第二次计算:排名算法处理

    update A t1 set t1.index=((select count(1) from A) - (select count(1) from A t2 where t2.num < t1.num))

    ——————————————————————————————————————————

    改进方案:仅做一次计算,完成数据计算和排名计算。

    在处理第一批5W数据的时候,预先算出第一批数据在整体的排名?

    欢迎一起讨论讨论...

    后续优化....

    ————————————————————————————————————————————————

    优化方案一:SQL优化,说明:oracle数据库,用到了rank函数,id是A表主键,自己通过ID关联自己,用rank函数,比上面的效率高很多

    merge into A t using (select id,rank() over (order by num desc) ranks from A) bb

    on (t.id = bb.id)

    when matched then

    update set t.index = bb.ranks;

    感谢DB同事-wangkui 给出的建议。

    补充材料:

    1)oracle rank函数

    基本语法:RANK ( ) Over ( [query_partition_clause] order_by_clause )

    说明:

    Rank ( ):根据 ORDER BY 子句中运算式的值,从查询返回的每一行,计算他们与其他行的相对位置。组内的资料按 ORDER BY 子句排序,然后给每一行赋一个行号,从而形成一个序列。该序列从1开始,往后累加。每次 ORDER BY 运算式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为 null 时相等的)。

    使用 Rank ( ) 函数时,如果两行得到同样的排序,则序数将随后跳跃。若两行叙述为1,则没有序数2,序列将给组中的下一行分配值3。

    2)oracle dense_rank函数

    基本语法:Dense_Rank ( ) over (  [query_partition_clause] order_by_clause)

    说明:与rank函数唯一的不同就是若两行序数为1,下一个序数是2,不会跳为3。

    展开全文
  • } /** * 根据学号查询该学生的排名 * @param list * @param studentCode * @return */ private static int getSort(List list, String studentCode) { //因为是排名,所以降序排序 Collections.sort...

    以下供参考:package com.test;

    public class Student {

    /**

    * id

    */

    private String id;

    /**

    * 学号

    */

    private String code;

    /**

    * 姓名

    */

    private String name;

    /**

    * 成绩

    */

    private float score;

    public String getId() {

    return id;

    }

    public void setId(String id) {

    this.id = id;

    }

    public String getCode() {

    return code;

    }

    public void setCode(String code) {

    this.code = code;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public float getScore() {

    return score;

    }

    public void setScore(float score) {

    this.score = score;

    }

    public Student(String id, String code, String name, float score) {

    super();

    this.id = id;

    this.code = code;

    this.name = name;

    this.score = score;

    }

    public Student() {

    super();

    }

    }

    package com.test;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    public class Test {

    public static void main(String[] args) {

    Student a = new Student("1", "001", "张三", 90.1f);

    Student b = new Student("2", "002", "李四", 70.2f);

    Student c = new Student("3", "003", "王五", 80.3f);

    Student d = new Student("4", "004", "赵六", 60.4f);

    Student e = new Student("5", "005", "钱七", 50.5f);

    List list = new ArrayList();

    list.add(a);

    list.add(b);

    list.add(c);

    list.add(d);

    list.add(e);

    float avg = getAvg(list);

    System.out.println("平均分为: " + avg);

    int sort = getSort(list, "003");

    System.out.println("排名为: " + sort);

    }

    /**

    * 根据学号查询该学生的排名

    * @param list

    * @param studentCode

    * @return

    */

    private static int getSort(List list, String studentCode) {

    //因为是排名,所以降序排序

    Collections.sort(list, new Comparator() {

    @Override

    public int compare(Student o1, Student o2) {

    if (o1.getScore() > o2.getScore()) {

    return -1;

    } else if (o1.getScore() == o2.getScore()) {

    return 0;

    } else {

    return 1;

    }

    }

    });

    int sort = 0;

    //因为list从0开始,所以要+1

    for (int i = 0; i 

    if(list.get(i).getCode().equals(studentCode)){

    sort = i+1;

    break;

    }

    }

    return sort;

    }

    /**

    * 传入list查询平均分

    * @param list

    * @return

    */

    private static float getAvg(List list) {

    int count = list.size();

    float totalScore = 0f;

    for (Student student : list) {

    totalScore += student.getScore();

    }

    float avg = totalScore / count;

    return avg;

    }

    }

    输出结果:平均分为: 70.3

    排名为: 2

    展开全文
  • } /** * 根据学号查询该学生的排名 * @param list * @param studentCode * @return */ private static int getSort(List list, String studentCode) { //因为是排名,所以降序排序 Collections.sort...
  • import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.URLEncoder;import java.util.Date;import java.util.Iterator;impo...
  • } 以下函数计算页面排名 private static HashMap makePageRanks(HashMap> graph, double decay, int limit, double epsilon) { // Step 1: The initialize step should go here HashMap oldPageRanks = new HashMap...
  • 看了几个大神的解答后,注意到很少有用JAVA代码去解决这个问题的,可能一方面java对这种超大数高精度的运算本身就不是特别擅长,另一方面,可能高手都喜欢用各种简短的代码完成复杂的操作. 本人也不是研究算法的,只是对...
  • importjava.util.ArrayList;importjava.util.Collections;importjava.util.Scanner;public classMain {public static String[] say = new String[5];public static ArrayList temp = new ArrayList();public static ...
  • 浙江大学是一所“985”“211”的双一流大学,地处有“人间天堂”美称的杭州,在校友会的排名也是前十。浙江大学从创立计算机科学与技术专业以来,一直将为国家提供计算机优质人才作为教学目标,且一直为之奋斗着。...
  • java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。 2016年伊始,标志着我们已经走过了Java的20年...
  • 2018计算机实力排名 ... 该分析根据他们的社会影响力对排名最高的帐户进行排名,尽管有趣的是,并不是所有Java传福音者的姓氏都在列表中。 不过,我们为提出的清单感到自豪。 今年,我们确实在寻求高...
  • 来自:JDON,作者:banq链接:https://www.jdon.com/51872如果您搜索“最佳网络框架 ”,您...Vert.x是一个多语言 Web 框架,它支持Java ,Kotlin,Scala,Ruby和Javascript支持的语言之间的共同功能。无论语言如...
  • /* 本程序的学生成绩单是txt格式给出的第一行是各课程的题目,从第...对java初学者是个不错的文件类 数组排序类 输入输出流 都综合涉及的一个简单实例哦~~~资源中附有一个随机生成的data成绩单,程序已经运行通过......
  • 计算学校排名

    2020-03-20 00:49:49
    问:给定A,B,C,D,E各自对自己学校或其他学校的描述,试计算学校的排名。 【A:E是最好的学校】,【B:B是第二好的学校】,【C:A是最差的学校】,【D:C不是最好的学校】,【E:D是最好的学校】,其中,只有第...
  • Java 一直排名第一的原因Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。2016年伊始,标志着我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 407
精华内容 162
热门标签
关键字:

java排名计算

java 订阅