对于面试,我们在介绍Java的List的时候,一般需要介绍到,什么是List?List包括什么?各自在用法上有什么区别,在存储上有什么区别?List需要注意什么?把这些问题串起来,我们可以这样介绍:

关于我对Java的List的介绍:(什么是List?)Java的List是一个接口,继承自Collections接口,不能直接进行对象的创建,(List包括什么?)它的具体实现类常见的有ArrayList和LinkedList,分别是数组和链表这两种数据结构的实现,这的链表是一个双向链表,LinkIterator可以进行双向遍历。我们可以方便的将任何数据类型(类的对象)放在List这样的容器里面,当然,需要保证所有的数据都具有同样的数据类型或者是同一个类的对象。(各自在用法和存储上有什么区别?)对于ArrayList和LinkedList的使用区别主要体现在数组和链表的数据结构用法区别上,前者在内存中是连续存储的,所以随机访问速度很快,遍历和查找会比较方便;而后者是一个接一个连起来的,在内存中的分布是非连续的,由于链表的特殊结构,它对链表中间的数据进行修改,插入和删除等操作都很快,也比较方便。当然这里指的是中间的数据,如果我们需要对List的尾元素进行频繁删除和插入操作,还是ArrayList的效率比较高的。两种List对于内存的扩展方式也是不同的,ArrayList可以进行初始化Capacity的配置,在之后如果数据长度超过了当前的capacity,ArrayList会再分配当前的capacity/2的容量,以此类推;当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。当然,ArrayList也是可以自定义如何进行内存的扩展的(方法改为了private,现在不行了),由于内存扩展时需要进行复制操作,所以使用的时候如果知道预期的List大小最好自己先指定。LinkedList在内存中是分散的,所以添加元素的时候跟capacity没什么关系。需要注意的是:。。。

推荐链接:Java List详解

最新文章

  1. Hibernate 学习笔记一
  2. 访问HTML元素(节点)
  3. UVALive 6092 Catching Shade in Flatland --枚举+几何计算
  4. MyBatis的Dao层注入SqlSession
  5. [转] linux中巧用ctrl-z后台运行程序
  6. 学习webView控件使用
  7. IIS大数据请求设置方法
  8. php复制目录及文件
  9. 安全cookie登录状态设计方案
  10. IO与文件读写---使用Apache commons IO包提高读写效率
  11. 【转】Lua编程规范
  12. 【Java并发编程】Callable、Future和FutureTask的实现
  13. spak数据倾斜解决方案
  14. websocket后台数据推送
  15. Eddy's mistakes HDU
  16. vue js 在组件中对数组使用splice() 遇到的坑。。。
  17. zookeeper和kafka的安装
  18. [洛谷P3014][USACO11FEB]牛线Cow Line (康托展开)(数论)
  19. [Go] 如何正确地 抛出 错误 和 异常(error/panic/recover)?
  20. bzoj1047 理想的正方形

热门文章

  1. wpf 窗口最小化后,触发某事件弹出最小化窗口并置顶
  2. 新装iis 页面503错误 DefaultAppPool停止解决方案
  3. [javaSE] 集合框架(迭代器)
  4. GPUImage使用
  5. git远程从入门到放弃
  6. 赶集网mysql开发36军规
  7. HDU 3466(01背包变种
  8. C#学习笔记-外观模式
  9. ps入门教程:photoshop工作界面
  10. Python3.7安装Geenlet