java - 在使用 Java 流进行排序时将数字解析为字符串的简单方法?
问题描述
我有一个对象列表,其中包含存储为字符串但实际上是数字的值,我正在尝试找到一种方法将字符串解析为 Java 流中的整数以对它们进行数字排序。这是我到目前为止所得到的。
List<SearchResultObject> returnedValues = doTheSearchMethod();
returnedValues = returnedValues
.stream()
.sorted(Comparator.comparing(SearchResultObject::getNumber))
.collect(Collectors.toList());
截至目前这种工作,但问题是因为这些数字实际上是字符串,它按字典顺序对数字进行排序,而不是按数字排序。有没有办法将解析合并到流中?所有数字都被填充为相同的大小。
3356001017053000000000000
3356001017002000000000000
3356001017004000000000000
3356001017026000000000000
5101004003020000000000000
4123000006002510000000000
4758000005010000000000000
解决方案
使用comparingLong
然后解析长。数字对于整数来说太大了。
returnedValues.sort(Comparator.comparingLong(sro->Long.parseLong(sro.getNumber())));
推荐阅读
- javascript - 需要帮助传递值“AngularJS”
- android - 无法更改 Android Xamarin 应用程序的目标框架
- python - 混合属性表达式中的 SQLAlchemy 多次提取
- javascript - 如何在 Javascript 数组中插入图像标签
- javascript - 如何从 flatpickr 事件方法访问组件数据?
- azure - Azure Functions - 自定义触发器绑定 MQTT
- azure - 添加多个 QnA 对
- go - TLS 相互身份验证返回错误,因为主机和端口的组合需要 TLS
- oauth-2.0 - IdentityServer - 用户 API 访问
- excel - 将 .txt 文件转换为 .xlsx