如何创建E类型的Java列表<;?超级E>;
我试图在Rosettacode.org上实现用java编写的快速排序方法 但是,我不知道如何向E类型的LinkedList添加元素以使用该方法如何创建E类型的Java列表<;?超级E>;,java,Java,我试图在Rosettacode.org上实现用java编写的快速排序方法 但是,我不知道如何向E类型的LinkedList添加元素以使用该方法 public static <E extends Comparable<? super E>> void main(String[] args) { List<E> list = new LinkedList<E>(); list.add(1); } publicst
public static <E extends Comparable<? super E>> void main(String[] args) {
List<E> list = new LinkedList<E>();
list.add(1);
}
publicstatic要添加整数,您应该更改
List<E> list = new LinkedList<E>();
List List=newlinkedlist();
到
List List=newlinkedlist();
出现错误的原因是,当您声明List
时,您可以添加到列表中的只是E
类型的元素,而Integer不是E
这里有大量的问题
首先,为什么要将主方法声明为static在java.util.List
接口中有一个List.add(int-index,E-element)
方法。@BuhakeSindi,在这里我提到过没有像thisOops这样的方法。抱歉,正在修复此问题。此代码不应驻留在main
方法中。您在泛型和非泛型类型之间切换,正如您所看到的,这些类型不起作用(编译器如何知道1
是否与E
兼容?)。我完全不知道你想要实现什么,你链接到的文章已经实现了快速排序代码,那么你为什么要重写它?@JonK我不是要重写它,我是要实现它。但是它已经实现了——你链接到的快速排序方法就是实现。你说的“实施”是指“使用”吗?谢谢。因此,我的问题是,如何将E指定为整数?请参阅我更新的帖子,该函数由泛型类型E
限定,以便编译器可以确定特定类型。在本例中,它将Integer
视为特定的类类型,并将E
绑定到java.lang.Integer
。
List<E> list = new LinkedList<E>();
List<Integer> list = new LinkedList<Integer>();
List<Integer> intList = new ArrayList<>(); //If using JDK 7 and higher.
List<Integer> intList = new ArrayList<Integer>(); //If using JDK 6 and JDK 5.
//Add all your items in the list.
intList.add(1);
intList.add(50);
intList.add(10);
intList.add(8);
intList.add(-24);
//...etc.
//Sort,
intList = quickSort(intList);