1

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

  1. 它没有通过List<T>
  2. List<T>不执行Comparable
  3. java.util.Collection被遗忘的进口

我已经完成了所有这些事情,所以我怀疑我的实现在某种程度上是错误的。根据这个堆栈溢出条目和手册,我的实现应该是合法的,所以我没有想法。如果 sort 被传递,规则会改变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);
                ^
4

2 回答 2

1

java.util.Collection不同于java.util.Collections. 将以下导入语句添加到您的代码中:

import java.util.Collections;`

java.util.Collection

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

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

仅由对集合进行操作或返回集合的静态方法组成。它包含对集合进行操作的多态算法,“包装器”,它返回由指定集合支持的新集合,以及其他一些零碎的东西。

它们是不同的,但处理的是同一个主题。你刚刚犯了一个不幸的错字。

于 2016-11-08T05:56:45.297 回答
0

声明丢失import..Collections

添加import java.util.Collections;

于 2016-11-08T04:45:40.930 回答