java - 尝试创建和测试可比较的 arraylist 类

标签 java generics arraylist

这是我的代码。我正在尝试测试我的 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 方法。我想尝试创建一个整数列表(来自数组)、一个字符串列表和其他一些列表,但我不断收到各种错误。

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/

相关文章:

java - 保存游戏状态

java - 缩小 Java 中的 Or/And 表达式?

java - 在运行时创建具有反射和泛型的类的数组

java - 将 Getters/Setter 添加到一个基类

java - 如何修复 "unchecked call to ' AttachView(V )' as a member of raw type ' BasePresenter'"?

Java,对末尾较长条目的ArrayList进行特殊排序

java - 在 Eclipse 中匹配颜色

JavaFX 3D 着色面...再次

android - 从内部存储读取 ArrayList

java - 比较 List<Map<String, String>> 和 List<Map<String, Object>> Java