[英]Collections.min() method confusion in list of string which holds double values
我有一個包含雙精度值的字符串列表。 由於它具有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
提前致謝。
在String
列表上運行Collections.min
時,將獲得按字典順序排在最前面的String
。 在您的示例中為“ 11.0”。
您必須將List
轉換為List<Double>
,以便Collections.min
提供所需的結果。 或者,可以使用public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
,並將Comparator<String>
傳遞給它,該Comparator<String>
將String
解析為double
並比較double 。
從Java Docs of Collections.min引用:
根據其元素的自然順序返回給定集合的最小元素。
因此結果是正常的,這是字符串的自然排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.