[英]Why can't I call Collections.sort() on my ArrayList<T>?
對於可能會有這樣問題的任何人,您可能需要“ 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方法,但沒有運氣。
我猜有些關於“ <T擴展Comparable <?超級T>>”我不明白...?
您基本上需要注意兩件事:
館藏
來自收藏
此類僅包含對集合進行操作或返回集合的靜態方法。 它包含對集合進行操作的多態算法,“包裝器”,它們返回由指定集合支持的新集合,以及其他幾率
因此,基本上,如果您必須排序或執行任何此類算法,請使用此方法。
接下來是:->
采集
這是提供Java收集框架基礎的接口。 它不包括地圖和已排序地圖。 它代表一組稱為其元素的對象,並具有用於具體實現的實現。 當您要使用ArrayLists和Maps時,需要考慮這一點。
因此,最重要的是,您有一個要運行的靜態算法,該算法存在於Collections中。 因此,請使用Collections.sort
您需要編寫Collections
而不是Collection
。 它們是相關的,但有所不同。 :-)
如果由於類似的錯誤而到達這里:
對於類型List <...>,未定義方法sort(Comparator <...>)
那么您可能正在使用低於1.8的JDK 。 在Java構建路徑中進行更改:
您是說Collections.sort()
(集合復數)嗎?
是帶有s的Collections.sort() 。
import java.util.Collections
可以了。
這是Collection**s**
,不是Collection
:
與
另外,如果您使用的是eclipse,請再次檢查Collections的import語句是否正確!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.