该 API 调用 返回一个潜在的大型的 List<String>,其中元素没有排序。我需要对其进行排序、搜索和访问随机元素。目前该 List 的实现是 ArrayList(我已经检查过源代码),但是未来 API 开发人员可能会在不改变接口的情况下选择切换到 LinkedList 实现。
对可能很大的 LinkedList 进行排序、搜索和访问将非常缓慢且无法接受。因此,我需要将 List 转换为 ArrayList,以确保程序的实际效率。然而,由于该 List 很可能已经是 ArrayList,因此没有必要无谓地创建一个新的 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更好的选项?