国家数据整理

import lombok.Data;
/*** @author 小帅丶* @className OlympicMedals* @Description 奥运奖牌* @Date 2021-07-26-13:55**/
@Data
public class OlympicMedals{/** 金牌 */private Integer gold_medal;/** 银牌 */private Integer silver_medal;/** 铜牌 */private Integer bronze_medal;/** 国家名称 */private String  country_name;/** 国家英文名称 */private String  country_en_name;/** 并列排名 */private Integer  ranking_juxtapose;public OlympicMedals(Integer gold_medal, Integer silver_medal,Integer bronze_medal, String country_name,String       country_en_name) {this.gold_medal = gold_medal;this.silver_medal = silver_medal;this.bronze_medal = bronze_medal;this.country_name = country_name;this.country_en_name = country_en_name;}/** 总金牌计算 */public Integer allMedal() {Integer medal = gold_medal + silver_medal + bronze_medal;return medal;}
}
 /*** @return java.util.List<cn.ydxiaoshuai.workrecord.model.OlympicMedals>* @Author 小帅丶* @Description 国家奖牌数据-更新时间:2021年7月27日10:19:23* 只是做一个演示,具体数据根据各大平台进行修改即可* @Date 2021-07-26 18:44**/private static List<OlympicMedals> getMedalList() {long startTime = System.currentTimeMillis();//单个国家数据OlympicMedals china = new OlympicMedals(6, 5, 7, "中国", "CHN");OlympicMedals japan = new OlympicMedals(8, 2, 3, "日本", "JPN");OlympicMedals usa = new OlympicMedals(7, 3, 6, "美国", "USA");OlympicMedals yg = new OlympicMedals(4, 5, 1, "英国", "GBR");OlympicMedals korea = new OlympicMedals(3, 0, 4, "韩国", "KOR");OlympicMedals australia = new OlympicMedals(3, 1, 3, "澳大利亚", "AUS");OlympicMedals els = new OlympicMedals(4, 5, 3, "俄罗斯奥委会", "ROC");OlympicMedals ydl = new OlympicMedals(1, 4, 4, "意大利", "ITA");OlympicMedals jnd = new OlympicMedals(1, 3, 1, "加拿大", "CAN");OlympicMedals fg = new OlympicMedals(1, 2, 2, "法国", "FRA");OlympicMedals xyl = new OlympicMedals(1, 1, 0, "匈牙利", "HUN");OlympicMedals tns = new OlympicMedals(1, 1, 0, "突尼斯", "TUN");OlympicMedals adl = new OlympicMedals(1, 0, 0, "奥地利", "AUT");OlympicMedals egde = new OlympicMedals(1, 0, 0, "厄瓜多尔", "ECU");OlympicMedals yl = new OlympicMedals(1, 0, 0, "伊朗", "IRI");OlympicMedals ksw = new OlympicMedals(2, 0, 0, "科索沃", "KOS");OlympicMedals nw = new OlympicMedals(1, 0, 0, "挪威", "NOR");OlympicMedals tg = new OlympicMedals(1, 0, 0, "泰国", "THA");OlympicMedals wzbkst = new OlympicMedals(1, 0, 0, "乌兹别克斯坦", "UZB");OlympicMedals hl = new OlympicMedals(0, 3, 0, "荷兰", "NED");OlympicMedals bx = new OlympicMedals(0, 2, 2, "巴西", "BRA");OlympicMedals yn = new OlympicMedals(0, 1, 1, "印尼", "INA");OlympicMedals sewy = new OlympicMedals(0, 1, 1, "塞尔维亚", "SRB");OlympicMedals zgtb = new OlympicMedals(0, 2, 2, "中国台北", "TPE");OlympicMedals bls = new OlympicMedals(0, 1, 0, "比利时", "BEL");OlympicMedals bjly = new OlympicMedals(0, 1, 0, "保加利亚", "BUL");OlympicMedals glby = new OlympicMedals(0, 1, 0, "哥伦比亚", "COL");OlympicMedals xby = new OlympicMedals(0, 1, 1, "西班牙", "ESP");OlympicMedals gljy = new OlympicMedals(0, 2, 0, "格鲁吉亚", "GEO");OlympicMedals yd = new OlympicMedals(0, 1, 0, "印度", "IND");OlympicMedals lmny = new OlympicMedals(0, 1, 0, "罗马尼亚", "ROU");OlympicMedals dg = new OlympicMedals(0, 0, 3, "德国", "GER");OlympicMedals hskst = new OlympicMedals(0, 0, 3, "哈萨克斯坦", "KAZ");OlympicMedals teq = new OlympicMedals(0, 0, 2, "土耳其", "TUR");OlympicMedals wkl = new OlympicMedals(0, 0, 2, "乌克兰", "UKR");OlympicMedals asly = new OlympicMedals(0, 0, 1, "爱沙尼亚", "EST");OlympicMedals ysl = new OlympicMedals(0, 0, 1, "以色列", "ISR");OlympicMedals mxg = new OlympicMedals(0, 0, 1, "墨西哥", "MEX");OlympicMedals mg = new OlympicMedals(0, 0, 2, "蒙古", "MGL");OlympicMedals xxl = new OlympicMedals(0, 0, 1, "新西兰", "NZL");OlympicMedals xlwny = new OlympicMedals(1, 0, 1, "斯洛文尼亚", "SLO");OlympicMedals rs = new OlympicMedals(0, 1, 1, "瑞士", "SUI");OlympicMedals jk = new OlympicMedals(0, 1, 1, "捷克", "CZE");OlympicMedals kwt = new OlympicMedals(0, 0, 1, "科威特", "KUW");OlympicMedals dm = new OlympicMedals(0, 1, 0, "丹麦", "DEN");OlympicMedals bmd = new OlympicMedals(1, 0, 0, "百慕大", "BER");OlympicMedals zgxg = new OlympicMedals(1, 0, 0, "中国香港", "HKG");OlympicMedals flb = new OlympicMedals(1, 0, 0, "菲律宾", "PHI");OlympicMedals yued = new OlympicMedals(0, 1, 0, "约旦", "JOR");OlympicMedals kldy = new OlympicMedals(1, 0, 1, "克罗地亚", "CRO");OlympicMedals aj = new OlympicMedals(0, 0, 2, "埃及", "EGY");OlympicMedals ktdw = new OlympicMedals(0, 0, 1, "科特迪瓦", "CIV");//全部国家数据List<OlympicMedals> olympicMedalsList = new ArrayList<>();olympicMedalsList.add(bmd); olympicMedalsList.add(zgxg); olympicMedalsList.add(flb); olympicMedalsList.add(yued); olympicMedalsList.add(kldy);olympicMedalsList.add(aj);olympicMedalsList.add(ktdw);olympicMedalsList.add(china);olympicMedalsList.add(korea);olympicMedalsList.add(australia);olympicMedalsList.add(usa);olympicMedalsList.add(japan);olympicMedalsList.add(dg);olympicMedalsList.add(hskst);olympicMedalsList.add(teq);olympicMedalsList.add(wkl);olympicMedalsList.add(asly);olympicMedalsList.add(ysl);olympicMedalsList.add(mxg);olympicMedalsList.add(mg);olympicMedalsList.add(xxl);olympicMedalsList.add(xlwny);olympicMedalsList.add(ksw);olympicMedalsList.add(nw);olympicMedalsList.add(tg);olympicMedalsList.add(wzbkst);olympicMedalsList.add(hl);olympicMedalsList.add(bx);olympicMedalsList.add(yn);olympicMedalsList.add(rs);olympicMedalsList.add(els);olympicMedalsList.add(ydl);olympicMedalsList.add(yg);olympicMedalsList.add(jnd);olympicMedalsList.add(fg);olympicMedalsList.add(xyl);olympicMedalsList.add(tns);olympicMedalsList.add(adl);olympicMedalsList.add(egde);olympicMedalsList.add(yl);olympicMedalsList.add(sewy);olympicMedalsList.add(zgtb);olympicMedalsList.add(bls);olympicMedalsList.add(bjly);olympicMedalsList.add(glby);olympicMedalsList.add(xby);olympicMedalsList.add(gljy);olympicMedalsList.add(yd);olympicMedalsList.add(lmny);olympicMedalsList.add(jk);olympicMedalsList.add(kwt);olympicMedalsList.add(dm);long endTime = System.currentTimeMillis();System.out.println("数组组装耗时:"+(endTime-startTime));return olympicMedalsList;}

排序计算

先进行奖牌排序

进行并列排名计算(完全相同奖牌以及数量排名相同,后续排名会进行叠加)

再进行排名数据分组

排名数据分组的数据进行英文简称排序

输出排名

 public static void main(String[] args) {//全部国家数据List<OlympicMedals> olympicMedalsList = getMedalList();System.out.println("获的奖牌国家总计:" + olympicMedalsList.size());System.out.println("--------------------------奥运奖牌榜-------------------------");System.out.println("排名\t国家/地区\t\t\t\t金牌\t银牌\t铜牌\t总计");long startTime = System.currentTimeMillis();//进行奖牌排序List<OlympicMedals> collect = olympicMedalsList.stream().sorted(Comparator.comparing(OlympicMedals::getGold_medal).thenComparing(OlympicMedals::getSilver_medal).thenComparing(OlympicMedals::getBronze_medal).reversed()).collect(Collectors.toList());//第一名名次开始值Integer rankingJuxtapose = 1;//进行排名计算,金银铜奖牌相同进行并列排名计算for (int i = 0; i < collect.size(); i++) {if (i == 0) {OlympicMedals medals = collect.get(i);medals.setRanking_juxtapose(rankingJuxtapose);} else {OlympicMedals medals = collect.get(i);OlympicMedals medalsPrevious = collect.get(i - 1);if (medals.getGold_medal().equals(medalsPrevious.getGold_medal()) &&medals.getSilver_medal().equals(medalsPrevious.getSilver_medal()) &&medals.getBronze_medal().equals(medalsPrevious.getBronze_medal())) {medals.setRanking_juxtapose(medalsPrevious.getRanking_juxtapose());} else {medals.setRanking_juxtapose(rankingJuxtapose);}}rankingJuxtapose++;}//对国家进行排序Comparator<Object> chinese = Collator.getInstance(Locale.ENGLISH);//根据排名分组Map<Integer, List<OlympicMedals>> sortMap = collect.stream().collect(Collectors.groupingBy(OlympicMedals::getRanking_juxtapose));//获取排名数据Set<Integer> integers = sortMap.keySet();//排名数据根据1-100进行排序Set<Integer> sortSet = new TreeSet<Integer>(Comparator.naturalOrder());sortSet.addAll(integers);//进行数据输出for (Integer integer : sortSet) {List<OlympicMedals> medalsList = sortMap.get(integer);if (medalsList.size() > 1) {//根据国家英文字母进行排序Collections.sort(medalsList, (c1, c2) -> {if (chinese.compare(c1.getCountry_en_name(), c2.getCountry_en_name()) >= 0) {return 1;} else {return -1;}});}medalsList.forEach(medals -> {String countryName;String country_name = medals.getCountry_name();if (country_name.length() <= 3) {countryName = country_name + "\t\t\t";} else if (country_name.length() == 4) {countryName = country_name + "\t\t\t";} else if (country_name.length() >= 5) {countryName = country_name + "\t\t";} else {countryName = country_name;}System.out.println(medals.getRanking_juxtapose() + "\t\t" + countryName +"\t\t" + medals.getGold_medal() +"\t\t" + medals.getSilver_medal() +"\t\t" + medals.getBronze_medal() +"\t\t" + medals.allMedal());});}long endTime = System.currentTimeMillis();System.out.println("排序耗时:"+(endTime-startTime));}

输出结果

数组组装耗时:1
获的奖牌国家总计:52
--------------------------奥运奖牌榜-------------------------
排名  国家/地区               金牌  银牌  铜牌  总计
1       日本                  8       2       3       13
2       美国                  7       3       6       16
3       中国                  6       5       7       18
4       俄罗斯奥委会              4       5       3       12
5       英国                  4       5       1       10
6       澳大利亚                    3       1       3       7
7       韩国                  3       0       4       7
8       科索沃                 2       0       0       2
9       意大利                 1       4       4       9
10      加拿大                 1       3       1       5
11      法国                  1       2       2       5
12      匈牙利                 1       1       0       2
12      突尼斯                 1       1       0       2
14      克罗地亚                    1       0       1       2
14      斯洛文尼亚               1       0       1       2
16      奥地利                 1       0       0       1
16      百慕大                 1       0       0       1
16      厄瓜多尔                    1       0       0       1
16      中国香港                    1       0       0       1
16      伊朗                  1       0       0       1
16      挪威                  1       0       0       1
16      菲律宾                 1       0       0       1
16      泰国                  1       0       0       1
16      乌兹别克斯坦              1       0       0       1
25      荷兰                  0       3       0       3
26      巴西                  0       2       2       4
26      中国台北                    0       2       2       4
28      格鲁吉亚                    0       2       0       2
29      捷克                  0       1       1       2
29      西班牙                 0       1       1       2
29      印尼                  0       1       1       2
29      塞尔维亚                    0       1       1       2
29      瑞士                  0       1       1       2
34      比利时                 0       1       0       1
34      保加利亚                    0       1       0       1
34      哥伦比亚                    0       1       0       1
34      丹麦                  0       1       0       1
34      印度                  0       1       0       1
34      约旦                  0       1       0       1
34      罗马尼亚                    0       1       0       1
41      德国                  0       0       3       3
41      哈萨克斯坦               0       0       3       3
43      埃及                  0       0       2       2
43      蒙古                  0       0       2       2
43      土耳其                 0       0       2       2
43      乌克兰                 0       0       2       2
47      科特迪瓦                    0       0       1       1
47      爱沙尼亚                    0       0       1       1
47      以色列                 0       0       1       1
47      科威特                 0       0       1       1
47      墨西哥                 0       0       1       1
47      新西兰                 0       0       1       1
排序耗时:76

【Java】【Lambda】东京奥运奖牌排序相关推荐

  1. 二维数组根据每个数组的元素排序(奥运奖牌排序)的几种方法

    二维数组根据每个数组的元素排序(奥运奖牌排序) 方法一 public static void sort(int[][] a){for(int i=0;i<a.length;i++){int k= ...

  2. 【qq机器人】东京奥运奖牌

    文章目录 前言 一.演示 二.完整源码 前言 前提你已经按照我的 教程 搭建好环境 一.演示 如果你看我前面的文章,那么你已经成功制作机器人了,那这是一个不错的插件,只需直接复制粘贴即可. 是不是还想 ...

  3. python爬取信息案例——部分国家东京奥运奖牌

    1.打开python3X的IDLE,ctrl+N新建一个文件 2.把以下代码复制粘贴后,ctrl+shift+S另存为'*.py',运行即可 import urllib.requestimport j ...

  4. java lambda sorted_Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式--特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  5. 程序员带半箱辣条参加东京奥运,网友:这不是辣条,是狗粮!

    整理 | 王晓曼 出品 | 程序人生(ID:coder _life) 7月23日,东京奥运会开幕在即,一条#程序员带半箱辣条参加东京奥运#的消息登上微博热搜,引发了网友们的热议. 程序员自带辣条参加奥 ...

  6. Java Lambda表达式入门

    本文转自:http://blog.csdn.net/renfufei... 转载请注明出处 原文链接: Start Using Java Lambda Expressions 下载示例程序 Examp ...

  7. java拉姆达表达式事例,Java Lambda表达式详解和实例

    简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体( ...

  8. Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记

    Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记 根据 JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭包或者匿名函数. ...

  9. java lambda例子_Java lambda 表达式常用示例

    实体类 package com.lkb.java_lambda.dto; import lombok.Data; /** * @program: java_lambda * @description: ...

最新文章

  1. python相关概念
  2. 软件推荐:微软桌面助手软件上手体验
  3. Windows 程序包管理器 1.0 正式发布
  4. java.lang.stackoverflowerror_java.lang.StackOverflowError——如何解决StackOverflowError错误
  5. linux标准I/O——按字符输入和输出
  6. 铁粉看进来,surprise|湾区人工智能
  7. 大数据可视化陈为智慧树_智慧树知到_大数据可视化_答案新版
  8. C++自学17:goto
  9. markdown 流程图js_如何在Markdown中画流程图
  10. [渝粤教育] 广东-国家-开放大学 21秋期末考试财务会计(二)10165k2
  11. 突发 , 谷歌官宣安卓改名了!
  12. 《暗时间》时间管理法则
  13. linux系统部署ffmpeg视频转码环境及使用方法
  14. 用Python爬取英雄联盟(lol)全部皮肤
  15. linux运行魔兽世界,暴雪内部就这么玩:Linux运行《魔兽世界》教程
  16. 某大厂程序员吐槽外包员工是大爷
  17. Caffe:图像数据转换成ldb(leveldb/lmdb)文件
  18. dell笔记本外接显示器_笔记本就一个 hdmi 的接口,如何外接 2 个 dell 显示器?...
  19. nyoj 1099 Lan Xiang's Square (水题)
  20. 产品学习之【竞品分析】

热门文章

  1. 访问网站浏览器左上角提示:windows 没有足够信息,不能验证该证书
  2. SL651协议报文解析(一)
  3. 5-6中央处理器-多处理器系统硬件多线程
  4. ESP8266--SDK开发(驱动WS2812B)
  5. triz桌面计算机,分享|ndm:NPM 的桌面 GUI 程序
  6. P1772 [ZJOI2006]物流运输(线性dp+最短路径)
  7. eeplat中遇到日期先后校验问题的解决
  8. 快速掌握SAP BDC数据导入
  9. 经典博弈论之3人分100枚金币
  10. 【分享】订阅用友U8集简云连接器同步费用审批数据至用友U8系统