【发布时间】:2016-02-21 12:32:28
【问题描述】:
我正在尝试使用预定义的索引数组对 ArrayList 进行排序。 我当前的示例使用原始 ArrayList 的副本进行排序,因此对于较大对象的 ArrayList 不可扩展
package sortExample;
import java.awt.List;
import java.util.ArrayList;
import java.util.Arrays;
public class sortExample {
public static void main(String[] args) {
String [] str = new String[] {"a","b","c","d"};
ArrayList<String> arr1 = new ArrayList<String>(Arrays.asList(str));
int [] indices = {3,1,2,0};
ArrayList<String> arr2 = new ArrayList(arr1.size());
for (int i = 0; i < arr1.size(); i++) {
arr2.add("0");
}
int arrIndex = 0;
for (int i : indices){
String st = arr1.get(arrIndex);
arr2.set(i, st);
arrIndex++;
}
System.out.println(arr1.toString());
System.out.println(arr2.toString());
}
}
【问题讨论】:
-
你有什么问题?你怎么做有点复杂,但它有效......
-
是否可以在不创建副本 arr2 的情况下使用索引数组对 ArrayList arr1 进行排序?
-
为什么你不只使用 Collections.sort()?
-
第二个列表你不用担心!它只会保存对已经存在的对象的引用,因此它的大小与对象的大小无关!
-
@VDanyliuk 在这种情况下,要使用 Collections.sort(),必须在要排序的对象中包含索引列表。