我试图创建一个合并和拆分方法来添加到这些:
public interface ArrayListADT<T> extends Cloneable {
public boolean isEmpty();
public boolean isFull();
public int listSize();
public int maxListSize();
public void print();
public Object clone();
public boolean isItemAtEqual(int location, T item);
public void insertAt(int location, T insertItem);
public void insertEnd(T insertItem);
public void removeAt(int location);
public T retrieveAt(int location);
public void replaceAt(int location, T repItem);
public void clearList();
public int search(T searchItem);
public void remove(T removeItem);
}
merge方法应该将两个无序数组列表连接成第三个。这两个列表没有共同的关键。第三个列表应该包含第一个和第二个列表中的所有项目。订购也应该保留。
public <T extends Comparable<T>> UnorderedArrayList<T> merge(UnorderedArrayList<T> list, UnorderedArrayList<T> list2){
for (int index2 = 0; index2 < list2.listSize(); index2++) {
for (int index1 = 0; ; index1++) {
if (index1 == list.listSize() || list.retrieveAt(index1) > list2.retrieveAt(index2)) {
list.add(index1, list2.get(index2));
break;
我为&gt;获取了错误的操作数类型..我应该实现compareTo方法吗?
对于拆分方法,这里有我所拥有的。
public void split(UnorderedArrayList list, UnorderedArrayList list2, UnorderedArrayList list3, int key) {
int num = 0;
list.clearList();
list2.clearList();
for(int i = 0;i < list3.length; i++) {
num = list3.retrieveAt(i);
if(num <= key)
list.insertEnd(num);
else
list2.insertEnd(num);
我在num = list3.retrieveAt(i);
收到错误
错误:无法将对象转换为int。我需要将其类型转换为int吗?
答案 0 :(得分:1)
我应该实施
compareTo
方法吗?
嗯,Comparable
(T
必须是)已经有一个。所以你使用它,是的:
if (index1 == list.listSize() || list.retrieveAt(index1).compareTo(list2.retrieveAt(index2)) > 0) {
如果您正在编写要用作T
的课程,那么是的,您需要实施compareTo
以满足Comparable
合同。