【问题标题】:ArrayList and the sort Method of CollectionsArrayList 和集合的排序方法
【发布时间】:2014-04-20 19:09:21
【问题描述】:

这个方法应该在 TreeMaps 键上进行迭代。然后它应该将键添加到 ArrayList 变量,因为我需要将它作为一个返回。我想做的另一件事是对 ArrayList 进行排序。

    ArrayList<String> getVehiclenames() {
         ArrayList<String> vehicleList = new ArrayList<>();
         for (String elem : vehicles.keySet()) {
             vehicleList.add(elem);
         }
    Collections.sort(vehicleList);
    return vehicleList;
}

我不能 100% 确定这是否有效,但无论如何我仍然无法相信调用集合方法只是对我的车辆列表进行排序。我期待像 vehicleList = Collections.sort(vehicleList); 这样的东西。

我的问题:这是这样工作的吗?如果是的话:那是如何工作的?我试着查了一下,但我的知识现在还没有。

【问题讨论】:

  • 排序是指按字母顺序排序。
  • 通过从treemap中获取key,你已经得到了一个排序的列表,为什么还要再次排序呢?
  • TreeMap 中的键已经排序。无需再次对它们进行排序,除非您使用不同的排序顺序。
  • @David Wallace:是的,我以前读过。但我不确定 TreeMap 如何对其进行排序。如果我在那里有字符串,每次我在那里添加一个元素时它是否按字母顺序排序?
  • 请参阅this 问题。它应该帮助你理解。

标签: java sorting arraylist


【解决方案1】:

Colletoions.sort((List list) 集合接口的方法基于自然排序进行排序。 sort方法传入的list的dataType必须是Comparable类型,即实现Comparable接口。

在您的情况下,您有一个字符串列表。 String 类实现了类似的接口。

所以要回答您的问题,是的,您的代码应该可以正常工作。

有关更多信息,请阅读比较器和可比较接口http://docs.oracle.com/javase/7/docs/api/java/util/package-summary.html

【讨论】:

    【解决方案2】:

    来自documentation

    这个实现将指定的列表转储到一个数组中,对数组进行排序,然后遍历列表,从数组中的相应位置重置每个元素。

    【讨论】:

    • 对不起,英语不是我的母语。通过“重置每个元素”,它们意味着重置我放入 sort() 的 ArrayList 的元素?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多