这是我的代码。我正在尝试测试我的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/