为什么我不能在ArrayList <T>上调用Collections.sort()?

Ste*_*eve 6 java sorting collections list arraylist

对于任何可能有这样问题的人,你可能需要"Collections.sort",而不是"Collection.sort",这是我在下面犯的错误.

我定义了一个定义为的类

public class Store implements Serializable, Comparable<Store> { ... }
Run Code Online (Sandbox Code Playgroud)

我在另一个类中有一个字段定义为:

ArrayList<Store> fStores = new ArrayList<Store>();
Run Code Online (Sandbox Code Playgroud)

我想对这个集合进行排序,所以在我调用的方法中:

Collection.sort(fStores);
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下编译错误:

The method sort(ArrayList<Store>) is undefined for the type Collection
Run Code Online (Sandbox Code Playgroud)

ArrayList实现List,并从文档中:

public static <T extends Comparable<? super T>> void sort(List<T> list)
Run Code Online (Sandbox Code Playgroud)

那么,为什么我会收到错误?我也尝试创建自己的Comparator后代,并将其传递给sort方法,但没有运气.

我猜这里有一些关于"<T延伸可比较<?超级T>>"我不理解......?

S.P*_*.P. 7

您需要查看基本上有两件事情:

集合

来自收藏

此类仅包含对集合进行操作或返回集合的静态方法.它包含对集合进行操作的多态算法,"包装器",它返回由指定集合支持的新集合,以及其他一些可能性和结束

所以基本上如果你必须排序或做任何这样的算法使用这个.

接下来是: - >

采集

这是一个提供Java集合框架基础的接口.它不包括地图和排序地图.它表示一组称为其元素的对象,并具有具体实现的实现.当您想使用ArrayLists和Maps时,需要考虑这一点.

所以,在底线,你有一个静态算法来运行,它存在于集合中.所以,使用Collections.sort