7.1、List(允许重复元素)

  • ArrayList:

    • 底层数据结构:Object[]
    • 查询(get)、遍历(iterator)、修改(set)使用的比较多的情况下,用ArrayList
    • 可扩容,容量无限
  • LinkedList
    • 底层数据结构:环形双向链表
    • 增加(add)、删除(remove)使用比较多的情况下,用LinkedList
    • 链表,容量无限

说明:

1)add(E e):在数组末尾插入元素,ArrayList需要考虑扩容问题,一旦扩容就要进行数组复制,LinkedList不需要;

2)add(int index):在数组中间插入元素,ArrayList需要考虑将该index及其后的数组元素全部复制后移一位,LinkedList不需要

7.2、Set(不允许重复元素,所以可用于去重操作)

  • HashSet:

    • 底层数据结构:HashMap
    • 可看做容量无限
  • TreeSet:
    • 底层数据结构:TreeMap
    • 容量无限

7.3、Map(key-value)

  • HashMap:

    • 底层数据结构:链表数组
    • 可扩容,且最大容量极大,可看做容量无限
  • TreeMap:
    • 底层数据结构:红黑树
    • 可以实现按key排序(在使用中,要么使用TreeMap(Comparator),要么让key对象实现Comparable)
    • 红黑树,容量无限

注意:

  • 以上全部线程不安全
  • 对于查找和删除较为频繁,且元素数量较多(元素数量>100)的情况下,Set和Map性能要比List好一些(单线程情况下)

上边第二个结论是在《分布式Java基础:应用与实践》一书中,林昊通过一系列的测试结果得出的。

最新文章

  1. PHP 删除文件(图片)
  2. JS之BOM、客户端检测和DOM
  3. JavaWeb学习总结-04 Servlet 学习和使用
  4. Android studio 一个项目中添加两个module遇到的bug
  5. java操作mysql中的编码问题解决
  6. ASP.Net 获取当前时间,包含各种时间格式
  7. Python3 模块
  8. 武汉新芯:已建成IP体系,欲以存储器为特色
  9. Ubuntu 16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具
  10. 【R】正态检验与R语言
  11. [国嵌笔记][019][Eclipse集成开发环境]
  12. apache日志管理【转】
  13. 使用express+multer实现node中的图片上传
  14. Request.getparameternames 获取form表单里面所有的请求参数 。 返回一个Enumeration类型的枚举.
  15. An annotation based command line parser
  16. C#之重写与隐藏
  17. firefox浏览器 插件--【维基百科+谷歌翻译】高级应用之 带图翻译
  18. python的循环和选择
  19. android 事件反拦截
  20. jquery原理集合

热门文章

  1. IOS常用第三方类库
  2. ECSHOP中 {insert name='ads' id=$ads_id num=$ads_num}含义
  3. 《Android源码设计模式》--享元模式
  4. CSUOJ 1982 小M的移动硬盘
  5. OpenGL笔记<第一章> 构建 GLSL class
  6. Microsoft Office Access
  7. Java double 精度
  8. C#剪切板
  9. 【BZOJ 2986】 莫比乌斯函数+容斥原理
  10. BZOJ 4520 [Cqoi2016]K远点对(KD树)