说说 Java List 列表

Java List 列表定义了一系列的操作方法,这里总结如下:

LinkedList 除了继承了 List 的操作方法之外,还定义一些特殊的方法:

其中有些是同义词,也就是说,这些方法的执行效果是相同的。

1 ArrayList 与 LinkedList 比较

ArrayList 底层是数组结构,形如:

而 LinkedList 则是链表结构:

因为所采用的数据结构不同,所以在以下这些特性上存在区别:

2 最佳实践

(1)尽量使用接口

一般情况下,尽量使用接口(List、Set 或 Map ),因为当业务场景要求需要改变实现时,很容易。

切换为另一种实现:

但如果需要使用具体实现类所特有的方法时,那么接口方式就不适用。比如 LinkedList 类具有 List 类所不具有的方法,如果需要用到这些方法,那么还是需要使用 LinkedList 具体实现类。

(2)集合合并

在两个集合合并的应用场景中,Collections.addAll() 比 Arrays.asList() 运行速度更快,而且写法上也更简洁,所以优先考虑使用。

(3)Arrays.asList() 的本质

Arrays.asList() 的输出表面上是一个 List ,其实本质是数组,所以不能调整大小 。如果使用 add() 或 remove(),就会抛出 UnsupportedOperationException 异常。

如果需要新增或删除,可以改用 new ArrayList<> 方法,然后用 Collections.addAll() 初始化元素:

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/108296048