zoukankan      html  css  js  c++  java
  • 常用Java集合类总结

    此文已由作者赵计刚授权网易云社区发布。

    欢迎访问网易云社区,了解更多网易技术产品运营经验。


    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基础:应用与实践》一书中,林昊通过一系列的测试结果得出的。



    免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

    更多网易技术、产品、运营经验分享请点击


    相关文章:
    【推荐】 《深入理解计算机系统》之浅析程序性能优化
    【推荐】 微服务监控探索

  • 相关阅读:
    Ionic开发手机App常用的软件
    Windows的Ionic环境配置
    百度静态资源公共库
    我的程序员之路
    angular.bind
    响应式布局之使用bootstrap
    初识bootstrap
    使用css3实现响应式布局
    mysql-阅读笔记1
    mysql优化
  • 原文地址:https://www.cnblogs.com/163yun/p/10150634.html
Copyright © 2011-2022 走看看