この API 呼び出しは、ソートされていない、潜在的に大きな List<String> を返します。並べ替え、検索し、ランダムな要素にアクセスする必要があります。現在、List は ArrayList によって実装されています (ソースを確認しました) が、将来、API 開発者が LinkedList の実装に (インターフェイスを変更せずに) 切り替えることを選択する可能性があります。
潜在的に大きい LinkedList の並べ替え、検索、アクセスは非常に遅くなり、私のプログラムでは受け入れられません。したがって、リストを ArrayList に変換して、プログラムの実用的な効率を確保する必要があります。ただし、List はすでに ArrayList である可能性が高いため、List の新しい ArrayList コピーを不必要に作成するのは効率的ではありません。
これらの制約を考慮して、List を 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 を ArrayList に変換するより良い方法はありますか? List を ArrayList に変換するよりも良いオプションはありますか?