【发布时间】:2019-06-14 03:49:55
【问题描述】:
我有一个帐户列表,我正在尝试使用 Comparator.comparing 对它们进行排序。但是,由于余额是字符串而不是双倍,因此排序不正确。有没有办法使用 Comparator.comparing() 将字符串值中的余额字段排序为双精度?
在我看来,我必须将余额类型更改为加倍才能使其工作,但我试图不更改这样做以与字符串类型的其他字段保持一致。
List<Account> accountList = getAccountList(id);
Comparator<Account> accountComparator =
Comparator.comparing(Account::getBalance);
if (sortDirect.equalsIgnoreCase("desc")) {
accountList.sort(accountComparator.reversed());
} else {
accountList.sort(accountComparator);
}
Balance DESC order sorted incorrectly.
"accountList": {
"accounts": [
{
"accountNumber": "A",
"balance": "39261.2",
"payment": "111.42"
},
{
"accountNumber": "B",
"balance": "251194.28",
"payment": "128.79"
...
]
}
【问题讨论】:
-
您可以在比较期间进行内部转换为 Double,但将数据作为字符串存储在相关字段中。
标签: java string java-8 double comparator