如何在Java中复制对象
我正在做我自己的anythink,它实现了可比较的接口。算法看起来不错,但是如何在Java中复制对象,java,Java,我正在做我自己的anythink,它实现了可比较的接口。算法看起来不错,但是Comparable a=list.get(i)是一个链接,但我需要这个对象的副本。我不能使用list.get(I).copy(),因为它对于可比较对象是未定义的 private static void sortIncrease(ArrayList<Comparable> list) { int i, j; for (i = 1; i < list.size(); i++) {
Comparable a=list.get(i)我想code>是一个链接,但我需要这个对象的副本。我不能使用list.get(I).copy()
,因为它对于可比较对象是未定义的
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;
}
}
}
}
private static void sortIncrease(ArrayList列表){
int i,j;
对于(i=1;i=0;j=j-1){
int cmpResult=a.compareTo(list.get(j));
如果(cmpResult<0){
list.set(j+1,list.get(j));
}否则{
列表集(j+1,a);
打破
}
}
}
}
我可以建议你一个“坏方法”,创建你自己的克隆方法。
你可以:
-将其他可比较对象的参数作为输入,并将其克隆到对象中
-创建一个提供参数的方法,稍后将其插入构造函数。为什么需要对象的副本?如果这是一个排序算法,就没有必要了。对,你通常不复制对象,而是复制引用。另外,compariable
通常是参数化的。例如,可比
。不要使用原始类型。我不能参数化它,因为我真的不知道它是什么。它可以是字符串、int或smth等@标记空格,然后使用通配符<代码>可比较
与引用/对象无关。这一切都与你的代码被破坏有关。复制对象无法修复它,您的逻辑是错误的。提示:您需要一个临时变量。