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

时间:2016-02-16 10:46:19

标签: java

我有一个包含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

提前致谢。

2 个答案:

答案 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:

  

根据。返回给定集合的最小元素   其元素的自然排序。

所以结果是正常的,它是字符串的自然顺序。

相关问题