Java Stream - 如何对包含 $ 符号的价格值进行排序

问题描述 投票:0回答:1

当我使用流对价格值(具有 $ 符号)进行排序时,以下代码无法正常工作。我希望用 $ 符号对值进行排序。这些值未正确排序。

import java.util.\*;
import java.util.stream.Collectors;

public class Main {
public static void main(String\[\] args) {

List\<String\> originalOrder = new ArrayList\<\>();

originalOrder.add("$15.994");
originalOrder.add("$7.99");
originalOrder.add("$49.99");
originalOrder.add("$15.99");
originalOrder.add("$9.99");
originalOrder.add("$29.99");

List\<String\> sortedList = originalOrder.stream()
.sorted((o1, o2) -\> o1.compareTo(o2)).collect(Collectors.toList());
System.out.println("Sorted list: " + sortedList);

}
}
java sorting stream
1个回答
0
投票

出于排序目的,您可以删除字符串开头的

$
符号,并将其余部分解析为
double
,以便可以按数字方式对值进行排序:

List<String> sortedList =
    originalOrder.stream()
                 .sorted(Comparator.comparing(s -> Double.parseDouble(s.substring(1))))
                  .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.