【问题标题】:Merge two unordered generic array lists合并两个无序的通用数组列表
【发布时间】:2016-06-23 15:27:31
【问题描述】:

我正在尝试创建一个合并和拆分方法来添加到这些:

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;

我得到一个错误的操作数类型 >.. 我应该实现 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 吗?

【问题讨论】:

  • UnorderedArrayList 是什么?是ArrayListADT吗?
  • 这是一个从ArrayListClass 扩展而来的类,它是一个实现ArrayListADT 的抽象类。 @TJ

标签: java generics arraylist


【解决方案1】:

我应该实现compareTo 方法吗?

嗯,ComparableT 必须是)已经有一个。所以你使用它,是的:

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

如果您正在编写一个用作T 的类,那么是的,您需要实现compareTo 以满足Comparable 契约。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2011-12-07
    • 1970-01-01
    • 2015-05-12
    • 2011-09-26
    相关资源
    最近更新 更多