-
2016 java排名_Java计算成绩平均值和排名
2021-02-27 08:05:24} /** * 根据学号查询该学生的排名 * @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; }
-
计算排名的java算法_排名算法计算
2021-03-10 07:52:36字段类型说明备注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。
-
java 成绩 排名算法_Java计算成绩平均值和排名
2021-02-26 15:12:36} /** * 根据学号查询该学生的排名 * @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成绩排名平均成绩_Java计算成绩平均值和排名
2021-02-26 15:59:22} /** * 根据学号查询该学生的排名 * @param list * @param studentCode * @return */ private static int getSort(List list, String studentCode) { //因为是排名,所以降序排序 Collections.sort... -
python关键词排名批量查排名_Java 实现的关键词批量查询排名和计算平均排名
2020-12-10 10:31:44import 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... -
计算排名的java算法_java - 页面排名算法计算错页面排名 - SO中文参考 - www.soinside.com...
2021-03-10 07:52:34} 以下函数计算页面排名 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计算斐波那契第100万项的最快算法排名汇总
2019-11-29 15:39:59看了几个大神的解答后,注意到很少有用JAVA代码去解决这个问题的,可能一方面java对这种超大数高精度的运算本身就不是特别擅长,另一方面,可能高手都喜欢用各种简短的代码完成复杂的操作. 本人也不是研究算法的,只是对... -
计算排名的java算法_算法笔记_153:算法提高 判断名次(Java)
2021-03-10 07:52:21importjava.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 ... -
java专业学校排名_计算机类专业高校排名,想进IT行业,这些学校不可错过!
2021-03-05 18:37:08浙江大学是一所“985”“211”的双一流大学,地处有“人间天堂”美称的杭州,在校友会的排名也是前十。浙江大学从创立计算机科学与技术专业以来,一直将为国家提供计算机优质人才作为教学目标,且一直为之奋斗着。... -
Java 排名第一的4个理由
2018-10-22 17:24:51java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。 2016年伊始,标志着我们已经走过了Java的20年... -
2018计算机实力排名_实力榜:2018年Java最具影响力的20名
2020-07-07 20:37:312018计算机实力排名 ... 该分析根据他们的社会影响力对排名最高的帐户进行排名,尽管有趣的是,并不是所有Java传福音者的姓氏都在列表中。 不过,我们为提出的清单感到自豪。 今年,我们确实在寻求高... -
js计算排名_这是目前最快的 Java 框架,300个框架中排名第一,真香
2020-11-22 05:09:34来自:JDON,作者:banq链接:https://www.jdon.com/51872如果您搜索“最佳网络框架 ”,您...Vert.x是一个多语言 Web 框架,它支持Java ,Kotlin,Scala,Ruby和Javascript支持的语言之间的共同功能。无论语言如... -
关于java初学者的计算学生平均成绩与排名的源代码
2009-10-27 13:30:12/* 本程序的学生成绩单是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 一直排名第一的原因
2016-09-24 10:02:01Java 一直排名第一的原因Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。2016年伊始,标志着我们...