【问题标题】:Sorting a part of Java ArrayList对 Java ArrayList 的一部分进行排序
【发布时间】:2011-07-07 02:23:28
【问题描述】:

仅对 ArrayList 的一部分进行排序的最有效方法是什么? 说一个包含 10 个元素的 Arraylist 中从索引 0 到 3 的所有元素。

Java 中是否有可用的库函数?

除了 Collections.sort(list) 对整个 List 进行排序!

编写高度优化的自定义排序函数需要一些工作。

【问题讨论】:

    标签: java sorting arraylist


    【解决方案1】:
    Collections.sort(list.subList(0,3));
    
    Note: '3' here is excluded from sorting
    

    documentation中有描述:

    公共列表子列表(int fromIndex, int toIndex)

    返回此列表在指定之间的部分的视图 fromIndex,包含,toIndex,排除。

    【讨论】:

    • 这是一个正确的答案。 Collections.sort 进行就地排序,List.subList 返回一个由原始列表支持的列表。
    • 这个解决方案有一个fencepost错误,因为这个命令实际上会排除索引3中的元素。
    【解决方案2】:

    ArrayList 中使用subList [继承自AbstractList] 方法。然后在该子列表上使用Collections.sort()。也就是说,如果编写高度优化的自定义排序函数确实是一项艰巨的工作

    【讨论】:

    • 虽然“继承自AbstractList”并没有错,因此,它几乎是无关紧要的。在我看来,subListList 定义更为重要。
    • AFAIK, List NOT 定义了subList。因此,让 OP 知道 ArrayList 究竟从哪里继承了该行为的相关性。
    • @anirvan Sure it does.
    • @TavianBarnes List 是一个接口,所以我只是暗示它没有实现它,而AbstractList 可以。
    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2011-12-20
    • 2013-08-20
    • 2013-11-29
    • 2012-04-26
    相关资源
    最近更新 更多