集合框架解析和遍历性能比较

场景
面试通常会问到关于集合框架的问题,总结如下:

1 arrayList与LinkedList 共同实现了哪些接口?及实现后的意义?

1)
ArrayList,继承AbstractList类,并且实现了List,RandomAccess,Clonable,Serializable四个接口。
LinkedList,继承AbstractSequentialList类,并且实现了List,Deque,Clonable,Serializable四个接口。
他们共同点是都实现了List,Clone,Serialzable三个接口。
2)
List接口提供一些常用的增删改查的方法。
Cloneable是个标记接口,实现这个接口的类表示支持类的克隆。
Serializable接口表示当前类支持序列化。
3)不同(附加)
ArrayList继承的是AbstractList类,而AbstractList实现了 List 的一些位置相关操作(比如 get,set,add,remove),但不支持添加和替换。ArrayList的底层是通过数组来实现的。
ArrayList实现接口RandomAccess,RandomAccess接口类似Cloneable是一种标记接口,标记二分法查询数据是采用for遍历还是迭代器遍历。

LinkedList继承的是AbstractSequentialList类,该类是AbstractList子类,是不同于AbstractList的另一套增删改查,底层是通过迭代器来完成相关操作的,而且LInkedList集合类底层是通过双端链表实现的,属于顺序访问的集合类。
LinkedList实现的接口,Deque是一个双端队列,LinkedList底层是通过双端链表实现的,所以能够实现数据结构的队列和栈。

参考:https://www.jianshu.com/p/bc5d1de14e9a

2 arrayList与LinkedList 的底层实现相同和不同之处?

2 arrayList与LinkedList 遍历时可能会抛哪些异常?

3 遍历有哪些方法?内部实现原理?

4 各种遍历方法性能比较?及适用场景?

发布了95 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/leinminna/article/details/104874547
今日推荐