簡體   English   中英

包含雙精度值的字符串列表中的Collections.min()方法混亂

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM