0

我正在尝试使用 Collections.sort 方法和 java.util.List 创建一个按字母顺序排列列表的程序,错误是:发现 1 个错误和 15 个警告:

Error: java.util.List is abstract; cannot be instantiated
--------------
** Warnings **
--------------
Warning: unchecked call to add(E) as a member of the raw type java.util.List
Warning: unchecked method invocation: method sort in class java.util.Collections is applied to given types
  required: java.util.List<T>
  found: java.util.List

我的代码:

public static void preset(){
    List words= new List();
    words.add("apple");
    words.add("country");
    words.add("couch");
    words.add("shoe");
    words.add("school");
    words.add("computer");
    words.add("yesterday");
    words.add("wowza");
    words.add("happy");
    words.add("tomorrow");
    words.add("today");
    words.add("research");
    words.add("project");
    Collections.sort(words);




  } //end of method preset
4

2 回答 2

1

正如错误所说,List是抽象的,您需要一些具体的实现。在您发布的情况下,ArrayList会这样做。

另请注意,您使用List的是原始类型;不要那样做(除非您使用的是 Java 5 之前的版本)。使用类型参数(此处为String)对其进行参数化。

还有:不要更改wordsto be的声明ArrayList:(List通常)已经足够好了,并且保持不变,您以后就可以更改实现。

综上所述:

List<String> words= new ArrayList<String>();

或者如果使用 Java 7:

List<String> words= new ArrayList<>();
于 2013-05-19T23:41:00.757 回答
0

你不能实例化java.util.List,但它的一些实现。喜欢(例如)java.util.ArrayList。请注意,它们是通用的。

只需修复以下内容:

 List words= new List();

 List<String> words= new ArrayList<String>();
于 2013-05-19T23:42:33.690 回答