Java:对ArrayList进行排序

NPE*_*NPE 22 java sorting arraylist

在Java的标准库中,是否有一种方法可以让人们ArrayList在适当的位置进行排序,即使用O(1)额外的存储?

Collections.sort(List<T>) 因为它不符合这个要求

将指定的列表转储到数组中,对数组进行排序,并迭代列表,从数组中的相应位置重置每个元素.

如果标准库中没有任何内容,可以使用哪些第三方库来执行此操作?

Pet*_*rey 14

您可以提取底层数组(例如反射)并在其上执行Arrays.sort(array,0,list.size()).

在对数组进行排序之前,Java 7不会在Arrays.sort()中复制数组.在Java 6中,它意味着Java 6中的Collections.sort()实际上复制了底层数组TWICE以执行排序.

  • 在Java 8中,`Collections.sort`在列表中调用`sort`,因此它取决于列表实现.`ArrayList`用它的元素数组调用`Arrays.sort`,所以它仍然存在. (2认同)