我有一个包含double值的字符串列表。因为它保持双重值。我使用Collection.min查找列表中的最小值。
不幸的是我收到了错误的结果。
在字符串列表中找到最小双精度值的最佳方法是什么?
以下是包含不同结果的代码段。
String a = "5.0";
String b = "7.0";
String c = "11.0";
List<String> test = new ArrayList<String>();
test.add(a);
test.add(b);
test.add(c);
System.out.println(Collections.min(test)); // Result 11.0
test = new ArrayList<String>();
test.add(a);
test.add(b);
System.out.println(Collections.min(test)); // 5.0
提前致谢。
答案 0 :(得分:5)
当您在Collections.min
列表中运行String
时,您会得到按字典顺序排在第一位的String
。在你的例子中,这是“11.0”。
您必须将List
转换为List<Double>
才能让Collections.min
提供您想要的结果。或者,使用可以使用public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
并向其传递Comparator<String>
,将String
解析为double
并比较双打。
答案 1 :(得分:1)
引用来自Java Doc of Collections.min:
根据。返回给定集合的最小元素 其元素的自然排序。
所以结果是正常的,它是字符串的自然顺序。