This API call返回一個潛在的大名單<字符串>,這是沒有排序。我需要對它進行排序,搜索並訪問隨機元素。目前,列表是通過一個ArrayList實現的(我檢查了源代碼),但在未來的某個未知點,API開發人員可能會選擇切換到LinkedList實現(不更改接口)。如何列出<String>轉換到一個ArrayList <String>
對我的程序進行排序,搜索,訪問潛在的大LinkedList會非常緩慢和不可接受。因此我需要將List轉換爲ArrayList以確保我的程序的實際效率。但是,由於列表最有可能是一個ArrayList,因此不必要地創建列表的新ArrayList副本將是低效的。
由於這些限制,我想出了下面的方法列表轉換成一個ArrayList:
private static <T> ArrayList<T> asArrayList(List<T> list) {
if (list instanceof ArrayList) {
return (ArrayList<T>) (list);
} else {
return new ArrayList<T>(list);
}
}
我的問題是:這是最有效的方式用List工作與未知實施?有沒有更好的方法將List轉換爲ArrayList?有沒有比List轉換爲ArrayList更好的選擇?
你知道它有多大(尺寸)嗎?除非它真的很大並導致性能問題,否則我只會使用複製構造函數。 – assylias
大概在5,000到50,000之間,該方法將被稱爲數萬次。 – dln385
在包含100,000個項目的列表中使用複製構造函數在我的臺式電腦上使用少於0.5ms(在JIT進入之後)。現在演員陣容快了大約1000倍;-) – assylias