java - 使用 Java 流排序时将数字解析为字符串的简单方法?

标签 java sorting parsing java-8 java-stream

我有一个对象列表,其中包含存储为字符串但实际上是数字的值,我正在尝试找到一种方法将字符串解析为 Java 流中的整数,以便按数字对它们进行排序。这是我到目前为止得到的结果。

List<SearchResultObject> returnedValues = doTheSearchMethod();
returnedValues = returnedValues
.stream()
.sorted(Comparator.comparing(SearchResultObject::getNumber))
.collect(Collectors.toList());

目前这种方法可行,但问题是因为这些数字实际上是字符串,所以它按字典顺序而不是数字对数字进行排序。有没有办法将解析合并到流中?所有数字都被填充为相同大小。

3356001017053000000000000
3356001017002000000000000
3356001017004000000000000
3356001017026000000000000
5101004003020000000000000
4123000006002510000000000
4758000005010000000000000

最佳答案

使用comparingLong 然后解析long。这些数字对于整数来说太大了。

returnedValues.sort(Comparator.comparingLong(sro->Long.parseLong(sro.getNumber())));

关于java - 使用 Java 流排序时将数字解析为字符串的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57013977/

相关文章:

java - 第 1 组与正则表达式不匹配

Java 实时视频捕获/流式传输

java - ArrayList 计数相等的对象

parsing - 解析交替字符字符串的简洁语法,如 "ababa"或 "baba"

java - 检查 html 代码中的日期

Java创建bat文件并转义空格

java - Paypal 定期付款 API - 工作流程

algorithm - 合并排序的空间要求

sorting - dojo 1.10 添加 CheckedMultiSelect 的排序行为

java - java如何从字符串中解析int?