-1
我正在制作自己的anythink,它实现了Comparable接口。算法看起来不错,但Comparable a = list.get(i);
是一个链接,但我需要这个对象的副本。我无法使用list.get(i).copy()
,因为它对于Comparable没有定义。如何在Java中复制对象
private static void sortIncrease(ArrayList<Comparable> list) {
int i, j;
for (i = 1; i < list.size(); i++) {
Comparable a = list.get(i);
for (j = i - 1 ; j >= 0 ; j = j - 1) {
int cmpResult = a.compareTo(list.get(j));
if (cmpResult < 0) {
list.set(j + 1, list.get(j));
} else {
list.set(j+1, a);
break;
}
}
}
}
为什么你需要一个对象的副本?如果这是一种排序算法,那就没有必要。 – Kayaman
对,你通常不复制对象,你复制参考。 “Comparable”通常是参数化的。例如。 '可比较'。不要使用原始类型。 –
markspace
我不能参数化,因为我真的不知道,它是什么。它可能是一个字符串,或者一个int,或者其他的。 @markspace –