这是我的代码。我正在尝试测试我的bubbleSort方法。

import java.util.ArrayList;
import java.util.List;


public class MyArrayList<T extends Comparable<? super T>> extends ArrayList<Comparable<T>> {

private static final long serialVersionUID = 1L;

private MyArrayList<T> myList; // class list

public MyArrayList(ArrayList<Comparable<T>> asList) {
    for (Comparable<T> e: asList) {
        myList.add(e);
    }
}

public void bubbleSort() {
    boolean swapped = true;

    while (swapped) {
        swapped = false;
        for (int i = 0; i < this.size() - 1; i++) {
            if (this.get(i).compareTo((T) this.get(i + 1)) > 0) {
                swapped = true;
                Comparable<T> temp = this.get(i);
                this.set(i, this.get(i + 1));
                this.set(i + 1, temp);
            }
        }
    }
}
}


在测试类中,我无法创建列表来测试我的bubbleSort方法。我想尝试创建一个Integer列表(从一个数组),一个String列表和其他几个列表,但是我不断遇到各种错误。

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;


public class MyArrayListTest<T> {

public void setUp() {
    Integer[] testIntArray = new Integer[]{0, 1, 2, 3};
    MyArrayList<Integer> myList = new MyArrayList<Integer>(Arrays.asList(testIntArray));
}
}


有什么想法为什么这不起作用,以及如何创建MyArrayList?

最佳答案

您应该从以下位置更改构造函数:

public MyArrayList(ArrayList<Comparable<T>> asList)


至:

public MyArrayList(List<T> asList)


Arrays.asList不返回java.util.ArrayList,这就是new MyArrayList<Integer>(Arrays.asList(testIntArray))不编译的原因。 Arrays.asList返回在Arrays类内部定义的嵌套类的实例,该实例也称为ArrayList,但更重要的是,Arrays.asList(T... a)的返回类型为List<T>

关于java - 尝试创建和测试可比较的arraylist类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29569348/

10-12 06:19