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

Kat*_*esa 0 java

我有一个包含double值的字符串列表.因为它保持双重值.我使用Collection.min来查找列表中的最小值.

不幸的是我得到了错误的结果.

找到字符串列表中最小的double值的最佳方法是什么?

以下是具有不同结果的代码段.

    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
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Era*_*ran 5

当你Collections.min在一个Strings 列表上运行时,你会String按字典顺序排在第一位.在你的例子中,这是"11.0".

您必须将您的转换List为a List<Double>才能获得Collections.min所需的结果.或者,use可以使用public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)并传递给s ,它将s Comparator<String>解析Stringdoubles并比较双精度数.