JAVA程序,N个射击选手,根据射击得分从小到大排名,射击得分一样则根据编号从小到大排名,很简单的一道题,可以用跳表做。

JUC包下面提供跳表的List和Map结构。

如下:

ConcurrentSkipListSet
ConcurrentSkipListMap

设计射击选手类:

package com.entity;import lombok.Data;import java.io.Serializable;/*** (Shooter)实体类** @author makejava* @since 2021-05-11 11:37:36*/
@Data
public class Shooter implements Serializable,Comparable{private static final long serialVersionUID = -74685728705540553L;private String name;private int score;private long id;public Shooter(String name, int score, long id) {this.name = name;this.score = score;this.id = id;}@Overridepublic String toString() {return "Shooter{" +"name='" + name + '\'' +", score=" + score +", id=" + id +'}';}//做HashMap的key时,需重写equals@Overridepublic boolean equals(Object o){if(!(o instanceof Shooter)){return false;}if(!this.getName().equals(((Shooter) o).getName())){return false;}if(this.getScore()!=((Shooter) o).getScore()){return false;}return true;}//做HashMap的key时,需重写hashCode@Overridepublic int hashCode(){return         ((Long)this.id).intValue();}@Overridepublic int compareTo(Object o) {Shooter o2=(Shooter)o;if(this.getScore()==o2.getScore()){return this.getId()>o2.getId()?1:-1;}return this.getScore()>o2.getScore()?1:-1;}
}

一:ConcurrentSkipListSet

public static void main(String []args)
{//Skip List类型ConcurrentSkipListSet<Shooter>shooters=new ConcurrentSkipListSet<Shooter>();for(int i=0;i<10;i++){shooters.add(new Shooter("姓名"+(i+1),new Random().nextInt(10),i+1));}for(Shooter shooter:shooters){System.out.println(shooter.toString());}
}

打印:

Shooter{name='姓名10', score=1, id=10}
Shooter{name='姓名1', score=2, id=1}
Shooter{name='姓名4', score=2, id=4}
Shooter{name='姓名6', score=2, id=6}
Shooter{name='姓名3', score=5, id=3}
Shooter{name='姓名7', score=7, id=7}
Shooter{name='姓名2', score=8, id=2}
Shooter{name='姓名8', score=8, id=8}
Shooter{name='姓名5', score=9, id=5}
Shooter{name='姓名9', score=9, id=9}

二:ConcurrentSkipListMap

public static void main(String []args)
{//Skip Map类型Map<Shooter,String>shooters=new ConcurrentSkipListMap<Shooter,String>();for(int i=0;i<10;i++){shooters.put(new Shooter("姓名"+(i+1),new Random().nextInt(10),i+1),i+"");}for(Map.Entry entry:shooters.entrySet()){System.out.println(entry.getKey().toString());}
}

打印:

Shooter{name='姓名9', score=0, id=9}
Shooter{name='姓名3', score=1, id=3}
Shooter{name='姓名4', score=1, id=4}
Shooter{name='姓名2', score=2, id=2}
Shooter{name='姓名7', score=2, id=7}
Shooter{name='姓名1', score=5, id=1}
Shooter{name='姓名8', score=5, id=8}
Shooter{name='姓名10', score=8, id=10}
Shooter{name='姓名5', score=9, id=5}
Shooter{name='姓名6', score=9, id=6}

射击选手得分的排序问题相关推荐

  1. CG 函数之选手得分

    某体育比赛对选手得分的计算规则为:由若干裁判对选手进行打分,然后去掉一个最高分.去掉一个最低分,然后计算平均分为该选手的最终得分. 由于体育比赛中不同项目的裁判数量可能不同,因此请编写一个计算选手得分 ...

  2. 评委打分 选手得分计算

    题目 7个评委打分(1-10)去掉最高分和最低分剩下的分数之和为选手得分 可以先把分数都加起来然后减去最高分和最低分 或 先求最高分最低分在去掉后求和 方法1 import java.util.Sca ...

  3. 选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

    [题目描述] 校园歌手大奖赛中,评委会给参赛选手打分(0~100分).选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分. [输入] 有两行.第1行是一个整数n(2&l ...

  4. 计算选手得分c语言程序,c程序评分系统.doc

    c程序评分系统.doc PAGE PAGE <程序设计基础(C)>课程设计报告 评分系统 学生姓名 学 号 班 级 指导教师 日 期 兰州交通大学新能源与动力工程学院 评分 一.设计目的 ...

  5. 怎么用计算机计算出选手最后得分,WPS技巧:TRIMMEAN函数计算选手得分

    如图1就是某大奖赛的选手评分情况表. 在"最后得分"一项中,我们可以用LARGE函数或SMALL函数来计算,如在J3中输入下面的公式: =AVERAGE(LARGE(B3:I3,{ ...

  6. 微课|中学生可以这样学Python(例5.4):计算决赛现场选手得分

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第5章  Python序列及应用 5.1.6  精彩例题分析与解答 例5.4  计算决赛现场选手最 ...

  7. 怎么用计算机计算出选手最后得分,计算选手最后得分(限制分的值,且最后按n或N键结束,其他键继续)...

    1./* 2.*程序的版权和版本声明部分: 3.*Copyright(c)2013,烟台大学计算机学院学生 4.*All rights reserved. 5.*文件名称: 6.*作者:尚振伟 7.* ...

  8. python平均分由高到低顺序排列输出选手编号和最后得分_python 字典的使用案例二:求平均分,并按平均分由高到低输出选手编号和最后得分...

    校园好声音大赛,三位选手得分,由8位评委给出. 请根据评分表,将每们选手的得分去掉一个最高分和一个最低分后求平均分,并按照平均分由高到低输出选手编号和最后得分. dicScores = {'012': ...

  9. K12472 射击比赛

    题目描述 图书评选活动结束后,一年一度的射击比赛也如期举行了.这一天N名选手(编号为1到N)聚集在操场上准备比赛,M个射击靶排成一行立在操场上,选手需要从左到右射击每一个靶,每个靶的得分范围是1到9, ...

最新文章

  1. 关于 hashcode 和 equals
  2. 单片机 10种软件滤波方法的示例程序
  3. Scott用户的表结构
  4. 多序列比对的c语言程序,多序列比对的实际应用
  5. 018:Django商城部署和数据库读写分离
  6. poj 3411 Paid Roads (dfs)
  7. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(9) - 64位指令格式(通用格式)
  8. sklearn K折(KFold)交叉验证案例,展开细节代码与cross_validate简写
  9. oc转java_OC和Java
  10. 狂神设计模式笔记-工厂模式
  11. 关于MFC中CSpinButtonCtrl控件
  12. 决策树算法总结(下:CART决策树)
  13. C/C++经典算法——约瑟夫问题
  14. 群晖DSM桌面无法删除快捷方式(无法右键)解决方法
  15. Linux分区efi,什么时候建立分区的时候需要建立EFI分区
  16. 0x01 前情提要随着疫情反复,今天我在家办公。我需要登一台服务器上配置,但是那个地址只能通过深信服vpn连接,在家办公一天就带了台kali系统的笔记本回来,没带windows的。 kali上
  17. Docker部署服务(二)上传镜像至Habor
  18. Swift基础(六)解包
  19. 买面茶--郭德纲相声
  20. r7c刷机android6.0,OPPO R7电信版R7c官方固件刷机包rom线刷包(Root权限+驱动)

热门文章

  1. 2021计算机技术考研非全日制,2021考研考非全日制还是全日制?盘点你不懂的非全日制深层含义~...
  2. visio2007 uml模板包
  3. 怎样阅读论文(台湾彭明辉)ZT
  4. luogu P4735 最大异或和
  5. Linux篇19多线程第三部分
  6. HTML5 postMessage 和 onmessage API 详细应用
  7. 提升效率之如何打印出漂亮的带颜色的日志(输出高亮)
  8. msvcp140.dll丢失VCRUNTIME140_.dll丢失的解决办法
  9. spring boot集成Elasticsearch客户端
  10. 能ping通但是不能打开网页问题的解决方法