問題是該方法不確定a和b是否具有可比性,因此編譯器會針對compareTo引發找不到符號。收到可比對象時找不到compareTo []
public class Merge {
public ArrayList<Object> sorted(Object[] a, Object[] b) {
int i, j, k;
i = j = k = 0;
ArrayList<Object> c = new ArrayList<>();
while (i < a.length || j < b.length) {
if (i == a.length) {
for (j = j; j < b.length; j++) {
c.add(k, b[j]);
k++;
}
break;
}
else if (j == b.length) {
for (i = i; i < a.length; i++) {
c.add(k, a[i]);
k++;
}
break;
}
else {
if (a[i].equals(b[j]) || a[i].compareTo(b[j]) < 0) {
c.add(k, a[i]);
i++;
k++;
}
else {
c.add(k, b[j]);
j++;
k++;
}
}
}
return c;
}
}
該代碼與Integer一起使用時工作。我想能夠使用,例如,sorted(a, b)
是a = Person[]
和b = Person[]
。當然在Person中使用compareTo和equals方法。
我應該實現並擴展與此類中的ObjectType相比並重寫compareTo嗎?
嘿,謝謝你的幫助!我可以在簽名中使用ArrayList嗎?你能解釋一下爲什麼你建議使用這個簽名或者我應該研究哪些話題? –
niklabaz