【发布时间】:2011-07-07 02:23:28
【问题描述】:
仅对 ArrayList 的一部分进行排序的最有效方法是什么? 说一个包含 10 个元素的 Arraylist 中从索引 0 到 3 的所有元素。
Java 中是否有可用的库函数?
除了 Collections.sort(list) 对整个 List 进行排序!
编写高度优化的自定义排序函数需要一些工作。
【问题讨论】:
仅对 ArrayList 的一部分进行排序的最有效方法是什么? 说一个包含 10 个元素的 Arraylist 中从索引 0 到 3 的所有元素。
Java 中是否有可用的库函数?
除了 Collections.sort(list) 对整个 List 进行排序!
编写高度优化的自定义排序函数需要一些工作。
【问题讨论】:
Collections.sort(list.subList(0,3));
Note: '3' here is excluded from sorting
在documentation中有描述:
公共列表子列表(int fromIndex, int toIndex)
返回此列表在指定之间的部分的视图 fromIndex,包含,toIndex,排除。
【讨论】:
在ArrayList 中使用subList [继承自AbstractList] 方法。然后在该子列表上使用Collections.sort()。也就是说,如果编写高度优化的自定义排序函数确实是一项艰巨的工作。
【讨论】:
AbstractList”并没有错,因此,它几乎是无关紧要的。在我看来,subList 由List 定义更为重要。
List NOT 定义了subList。因此,让 OP 知道 ArrayList 究竟从哪里继承了该行为的相关性。
List 是一个接口,所以我只是暗示它没有实现它,而AbstractList 可以。