2016-06-23 2 views
1

Я пытаюсь создать слияния и разделения метод добавления к ним:Объединение двух маркированных списков родовых массивов

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); 
} 

Метод объединения должны объединить два маркированного списка массива в 3-й. Эти два списка не имеют общих ключей. В третьем списке должны быть все элементы из списка один и два. Приказ также должен быть сохранен.

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; 

Я получаю плохие типы операндов для> .. Должен ли я реализовать метод 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?

+0

Что такое 'UnorderedArrayList'? Это 'ArrayListADT'? –

+0

Это класс, который простирается от 'ArrayListClass', и это абстрактный класс, который реализует' ArrayListADT'. @TJ – DJ2

ответ

0

Should I implement a compareTo method?

Ну, Comparable (который T требуется быть) уже есть. Таким образом, вы используете его, да:

if (index1 == list.listSize() || list.retrieveAt(index1).compareTo(list2.retrieveAt(index2)) > 0) { 

Если вы пишете класс для использования в качестве T, то да, вам нужно реализовать compareTo для удовлетворения Comparable контракта.