【问题标题】:Why can't I call Collections.sort() on my ArrayList<T>?为什么我不能在我的 ArrayList<T> 上调用 Collections.sort()?
【发布时间】:2012-03-23 12:34:38
【问题描述】:

对于可能有此类问题的任何人,您可能需要“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 方法,但没有成功。

我猜有一些关于“>”的东西我不明白......?

【问题讨论】:

  • 不是Collections.sort(),不是Collection.sort()
  • 收藏有错别字?我想你的意思是Collections

标签: java list sorting collections arraylist


【解决方案1】:

基本上有两件事你需要看:

收藏

来自Collections

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

所以基本上,如果您必须排序或执行任何此类算法,请使用它。

接下来是:->

收藏

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

因此,归根结底,您需要运行一个静态算法,该算法存在于 Collections 中。所以,使用 Collections.sort

【讨论】:

    【解决方案2】:

    你需要写Collections 而不是Collection。它们是相关的,但又不同。 :-)

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      您是说Collections.sort()(集合复数)吗?

      【讨论】:

        【解决方案5】:

        它是Collections.sort(),带有一个 s。

        import java.util.Collections 你应该没事。

        【讨论】:

          【解决方案6】:

          你的问题是你打电话给Collection.sort(),而不是Collections.sort()

          这是两个独立的类:

          Collections

          Collection

          Collection 是一个接口,而 Collections 是一个实用程序类。

          【讨论】:

          • 宾果游戏!感谢您的快速回复。
          • @Steve 当然,当然。乐于助人:D
          【解决方案7】:

          另外,如果您使用的是 eclipse,请仔细检查 Collections 的导入语句是否正确!

          【讨论】:

            【解决方案8】:

            如果你因为类似的错误而来到这里:

            未定义 List<...>

            类型的方法 sort(Comparator<...>)

            那么您可能正在使用 JDK 低于 1.8。在 Java 构建路径中更改它:

            【讨论】:

              猜你喜欢
              • 2013-01-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-02
              • 2017-10-14
              • 2011-06-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多