当我使用流对价格值(具有 $ 符号)进行排序时,以下代码无法正常工作。我希望用 $ 符号对值进行排序。这些值未正确排序。
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);
}
}
出于排序目的,您可以删除字符串开头的
$
符号,并将其余部分解析为 double
,以便可以按数字方式对值进行排序:
List<String> sortedList =
originalOrder.stream()
.sorted(Comparator.comparing(s -> Double.parseDouble(s.substring(1))))
.collect(Collectors.toList());