对于任何可能有这样问题的人,你可能需要“Collections.sort”,而不是“Collection.sort”,这是我在下面犯的错误。
我定义了一个定义为
的类public class Store implements Serializable, Comparable<Store> { ... }
我在另一个类中有一个字段定义为:
ArrayList<Store> fStores = new ArrayList<Store>();
我想对这个集合进行排序,所以在我调用的方法中:
Collection.sort(fStores);
但是,我收到以下编译错误:
The method sort(ArrayList<Store>) is undefined for the type Collection
ArrayList实现了List,并且来自文档:
public static <T extends Comparable<? super T>> void sort(List<T> list)
那么,为什么我会收到错误?我也尝试创建自己的Comparator后代,并将其传递给sort方法,但没有运气。
我猜测有一些关于“&lt; T extends Comparable&lt;?super T&gt;&gt;”我不明白......?
答案 0 :(得分:7)
基本上有两件事你需要注意:
收藏
此类仅包含对集合进行操作或返回集合的静态方法。它包含对集合进行操作的多态算法,“包装器”,它返回由指定集合支持的新集合,以及其他一些可能的结果
所以基本上如果你必须排序或做任何这样的算法使用它。
接下来是: - &gt;
集合
这是一个提供Java集合框架基础的接口。它不包括地图和排序地图。它表示一组称为其元素的对象,并具有具体实现的实现。当您想使用ArrayLists和Maps时,您需要考虑这一点。
所以,在底线,你有一个静态算法来运行,它存在于集合中。所以,使用Collections.sort
答案 1 :(得分:3)
您需要写Collections
而不是Collection
。他们是相关的,但不同。 : - )
答案 2 :(得分:1)
您的意思是Collections.sort()
(收藏复数)吗?
答案 3 :(得分:1)
import java.util.Collections
你应该没事。
答案 4 :(得分:1)
您的问题是您拨打的是Collection.sort()
,而不是Collections.sort()
这是两个独立的类:
Collection是一个接口,而Collections是一个实用程序类。
答案 5 :(得分:1)
它是Collection**s**
,而不是Collection
:
VS
答案 6 :(得分:1)
如果你因为类似的错误到达这里:
方法sort(Comparator&lt; ...&gt;)未定义类型List&lt; ...&gt;
然后你可能使用 JDK低于1.8 。在Java Build Path中更改它:
答案 7 :(得分:0)
另外,如果您正在使用eclipse,请仔细检查Collections的import语句是否正确!