2

几天前我来到这里(SO)研究如何从Android中的集合中获取最小值和最大值,并找到了以下效果的解决方案(抱歉没有链接到我使用的实际答案):

Max = (TextView)findViewById(R.id.Max);
Collections.sort(list);
Max.setText(String.format("%.2f", Collections.max(list)));

我的问题是我真的需要在提取最小值/最大值之前对列表进行排序吗?我试过运行代码而不对列表进行排序,它似乎工作正常。我只是担心,因为我使用的答案肯定首先对列表进行了排序,所以我认为一定有原因,我只是不知道它是什么!

4

2 回答 2

3

此外,@BobbyDigital 的回答准确地指出了 th 方法迭代完整列表,我只想提一下,使用该max函数的结果可能取决于列表元素的类型。如果您看到文档,它会说

根据元素的自然顺序返回给定集合的最大元素。

如果您看到为什么 Collections.max() 不返回字符串集合的实际最大值?问题,此人使用了Strings. 在使用 abve 数字提取 max 时,他没有得到最大数字,因为它返回的值是字典上最大的值。因此,仅提一下他的代码:

ArrayList<String> dirNo = new ArrayList<String>();

dirNo.add("1");
dirNo.add("2");
dirNo.add("3");
dirNo.add("4");
dirNo.add("5");
dirNo.add("6");
dirNo.add("7");
dirNo.add("8");
dirNo.add("9");
dirNo.add("10");
dirNo.add("11");

System.out.println("max : " + Integer.parseInt(Collections.max(dirNo))
        + "");

上面的代码给出9了答案。所以在使用时要小心。您可能希望Integer根据您的需要将所有内容转换为 etc。

PS:示例来自提到的问题,答案的灵感来自NPE在同一问题上的这个答案。

于 2013-08-22T22:15:17.493 回答
2

不,它不必排序。该方法迭代整个集合。
有关该方法,请参阅 Java 文档!

于 2013-08-22T22:08:55.320 回答