尽管可比较实现,但找不到Collections.sort

时间:2016-11-08 03:25:13

标签: java collections cannot-find-symbol

我在这里阅读了其他问题并发现当编译器为Cannot find symbol抛出Collections.sort(List<T> list)时,问题通常是......

  1. 未通过List<T>
  2. List<T>没有实施Comparable
  3. java.util.Collection遗忘
  4. 的输入

    我已经完成了所有这些事情,所以我怀疑我的实施有点不对劲。根据{{​​3}}堆栈溢出条目和this我的实现应该是合法的,所以我没有想法。如果排序传递List<Item>

    ,规则是否会更改

    可比较的实施

     public abstract class Item implements Comparable<Item>
      9 {
     ...//Fields and constructor omitted
     25     @Override
     26     public int compareTo(Item i)
     27     {
     28 //      String title = this.title; DEBUG FLAG: delete maybe?
     29         return this.title.compareTo(i.title); //Returns a negative value if title < i.title, implements alphabetical order by title
     30     }
    

    调用Library.java(假设一个正确构建的LinkedList TreeMap)

     public Collection<Item> itemsForKeyword(String keyword)
     25     {
     26         List<Item> list;
     27         if(keywordDbase.get(keyword) == null) //There is no mapping at specified keyword
     28         {
     29             list = null;
     30         }
     31         else if(keywordDbase.get(keyword).isEmpty()) //There is a mapping but it is empty
     32             {
     33                 list = null;
     34             }
     35             else //There is a list that has at least one item in it
     36             {
     37                 list = keywordDbase.get(keyword); //stores a reference to the LinkedList in list
     38             }
     39
     40         Collections.sort(list); //DEBUG FLAG: Calling sort may be unnecessary 
     41
     42         return list; here
     43     }
    

    错误

    library/Library.java:40: error: cannot find symbol
                    Collections.sort(list);
                    ^
    

2 个答案:

答案 0 :(得分:1)

java.util.Collectionjava.util.Collections不同。将以下import语句添加到您的代码中:

import java.util.Collections;`

java.util.Collection

  

集合层次结构中的根接口。集合表示一组对象,称为其元素。有些集合允许重复元素而其他集合则不允许。有些是订购的,有些是无序的。 JDK不提供此接口的任何直接实现:它提供了更具体的子接口(如Set和List)的实现。此接口通常用于传递集合并在需要最大通用性的情况下对其进行操作。

另一方面,有一个班级java.util.Collections

  

仅包含对集合进行操作或返回集合的静态方法。它包含对集合进行操作的多态算法,“包装器”,它返回由指定集合支持的新集合,以及其他一些可能的结果。

它们不同但涉及同一主题。你刚刚犯了一个不幸的错字。

答案 1 :(得分:0)

import的{​​{1}}语句丢失..

添加Collections