java - Collections.Sort() 的行为;
问题描述
当数字和字母混合存在时,我试图了解 Collections.sort() 的排序行为。通过进行研究,我了解到数字在字母之前排序,字符串按字母顺序排序。但是,这个例子对我来说仍然有点混乱。Collections.sorts 升序。如果先对数字进行排序,为什么结果不是 [8, 30, 3A, FF]?
在下面的示例中,结果为 [30, 3A, 8, FF]
List<String> hex = Arrays.asList("30", "8", "3A", "FF");
Collections.sort(hex);
System.out.println(hex);
但在这个例子中,结果是 [30, 40, 50, 60]
List<String> nums = Arrays.asList ("50", "30", "60", "40");
Collections.sort(nums);
System.out.println(nums);
解决方案
sort 使用字符串的方式是从比较元素的第一个字符开始。如果第一个元素的第一个字符低于第二个元素的第一个字符,则第一个元素较低,因此它在顶部。
如果第一个字符相等,则继续处理第二个字符,依此类推...
例子
"80" 与 "3600" 相比 ==> '3' 低于 '8' 因此 "3600" 低于 "80"
"88" 与 "830" 比较 ==> '8' 等于 '8',然后尝试第二个 '3' 低于 '8' 所以 "830" 低于 "88"
推荐阅读
- c# - 我应该使用 Task.Run 在同步上下文中等待任务吗?
- neo4j - 在 Neo4j 上从 CSV 创建许多关系非常慢,如何解决这个问题?
- android - open_CV 贡献 Android 工作室
- python - 我们如何在自定义端点上使用 python-eve @requires_auth 装饰器?
- angular - 错误类型错误:无法读取未定义的属性“街道”
- sql-server - 使用密码错误访问数据库的 SQL 导入向导
- qt - 在QDialogButtonBox中,对话框关闭时它在哪里断开按钮的销毁连接?
- r - 在 R 中,如果我分配数据框,它不会在印地语中获取数据
- php - 如何在 GRID 和 LIST 模式下在类别页面上显示自定义属性
- mysql - 如何在 Codeigniter 中忘记密码,密码通过电子邮件发送