使用像TreeMap这样的有序集合,它按照键的自然顺序保存其条目(键值映射)。因为,您希望对高分进行排序,将分数作为键和玩家名称作为其值。

// instantiate your sorted collection

Map highestScores = new TreeMap();

// setup a file reader

BufferedReader reader = new BufferedReader(

new FileReader(new File("/path/to/file")));

String line = null;

while ((line = reader.readLine()) != null) { // read your file line by line

String[] playerScores = line.split(": ");

// populate your collection with score-player mappings

highestScores.put(Integer.valueOf(playerScores[1]), playerScores[0]);

}

// iterate in descending order

for (Integer score : highestScores.descendingKeySet()) {

System.out.println(highestScores.get(score) + ": " + score);

}

的输出强>的

Eric: 25

Oscar: 18

Bert: 16

John: 12

Carl: 9

修改强>

两个或更多玩家很可能拥有相同的高分。因此,排序后的集合必须更加复杂,但如果您已经理解了上面的那个,那么理解这个集合就不会有麻烦了。

现在我们不得不将得分映射到玩家,我们必须将其映射到List个玩家(具有相同的高分):

// {key - value} = {high score - {list, of, players}}

TreeMap> highestScores =

new TreeMap>();

BufferedReader reader = new BufferedReader(

new FileReader(new File("/path/to/file")));

String line = null;

while ((line = reader.readLine()) != null) {

String[] playerScores = line.split(": ");

Integer score = Integer.valueOf(playerScores[1]);

List playerList = null;

// check if a player with this score already exists

if ((playerList = highestScores.get(score)) == null) { // if NOT,

playerList = new ArrayList(1); // CREATE a new list

playerList.add(playerScores[0]);

highestScores.put(Integer.valueOf(playerScores[1]), playerList);

} else { // if YES, ADD to the existing list

playerList.add(playerScores[0]);

}

}

// iterate in descending order

for (Integer score : highestScores.descendingKeySet()) {

for (String player : highestScores.get(score)) { // iterate over player list

System.out.println(player + ": " + score);

}

}

的输出强>的

Eric: 25

Oscar: 18

Bert: 16

John: 12 *

Jane: 12 *

Carl: 9

java 文本排序_如何使用Java按最高编号对文本文件进行排序相关推荐

  1. java map按照value排序_基础:Java集合需要注意的 5 个问题

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 Java集合中的List.Set和Map作为Java集合食物链的顶级,可谓是各有千秋.本文将对于List.Set和Map之间的联系与区别进行 ...

  2. java 内存排序_详细解析Java内存,处理器重排序,编译器重排序以及它对线程的影响...

    欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 我们在编写程序的时候有一个编写代码的顺序,那么计算机执行的时候就是按照我们编写代码的顺序来执行的吗?答案是 ...

  3. java arraylist排序_最全Java集合笔记

    集合概述 什么是集合 集合框架:用于存储数据的容器. 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算法. 接口:表示集 ...

  4. [转载] java中对数组进行排序_如何在Java中对数组排序

    参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...

  5. java中对数组进行排序_如何在Java中对数组排序

    java中对数组进行排序 Java Array is like a container that can hold a fixed number of the same type of items, ...

  6. java 文本编辑器_「java文本编辑器」用Java实现文本编辑器 - seo实验室

    java文本编辑器 源码里有注释:import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; ...

  7. java原始类型排序_海牛部落 java 系列教程:(5)数组和排序

    1 数组 数组是编程语言中最常见的的数据结构,其本身是个引用类型数据. java数组要求所有的数组元素具有相同的数据类型. 一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,数组的长度将不可变 ...

  8. 全面理解java内存模型_深入理解Java内存模型(八)——总结

    处理器内存模型 顺序一致性内存模型是一个理论参考模型,JVM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照.JVM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序 ...

  9. java for循环_愉快地学Java语言:第五章 循环

    导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...

  10. java在线编译器_什么是Java内存模型

    在知识星球中,有个小伙伴提了一个问题:有一个关于JVM名词定义的问题,说"JVM内存模型",有人会说是关于JVM内存分布(堆栈,方法区等)这些介绍,也有地方说(深入理解JVM虚拟机 ...

最新文章

  1. 10秒一部电影,全球首个5G数据连接完成
  2. 最短路算法整理 1557 热浪
  3. 使用密钥加密码加密_创建基于密码的加密密钥
  4. python 数据类型之间的转换
  5. 牛客16437 买铅笔
  6. windows7官方原版_从零开始学装系统——微软官方原版windows7详细安装流程
  7. 在Qsys中创建用户自定义IP
  8. selenium 清空缓存
  9. 职业院校教师招聘结构化面试
  10. 打印表格打印机没有反应_windows10下office2016文档和表格 hp打印机 按打印没反应解决办法...
  11. Elasticsearch+logstash+kibana
  12. SSA动态字幕制作技术讲座(转)
  13. 小米4可以刷入linux,给小米4刷上SailfishOS是怎样的体验?附刷机教程
  14. 前端市场又“饱和”了,还有必要学吗?
  15. 英语专业自学python_如何做好英专人? 给迷茫英专生的一些建议
  16. #每天一道算法题:出现一次与出现k次的数
  17. (轻便)调试JavaScript的旺旺插件(基于jzshmyt的javascript-logger)
  18. 如何查看exe或dll的依赖库dll
  19. 信用卡葵花宝典 阅读笔记(三)
  20. android自定义打对勾的连续签到效果

热门文章

  1. [html] 你有使用过meter标签吗?说说它的用途有哪些?
  2. 前端学习(2692):重读vue电商网站13之使用动态编辑标签
  3. 前端学习(2208):网络请求模块的选择--axios
  4. 前端学习(1988)vue之电商管理系统电商系统之获取商品列表
  5. 前端学习(1876)vue之电商管理系统电商系统之整体布局
  6. java学习(137):java异常初识
  7. java学习(129):hashmap的方法
  8. 玩转oracle 11g(39):oracle11g密码过期后的解决方法
  9. Qt 生成bin文件
  10. 移动端实现hover效果