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

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

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

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

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

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

常用Java集合类总结的更多相关文章

  1. 第七章 常用Java集合类总结

    7.1.List(允许重复元素) ArrayList: 底层数据结构:Object[] 在查询(get).遍历(iterator).修改(set)使用的比较多的情况下,用ArrayList 可扩容,容 ...

  2. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  3. [转]Java五个最常用的集合类之间的区别和联系

    Map<String, ?>只能是只读模式,不能增加,因为增加的时候不知道该写入什么类型的值:Map<String, Object>可以读和写,只要是所有Object类的子类都 ...

  4. Java集合类--温习笔记

    最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...

  5. 做JavaWeb开发不知Java集合类不如归家种地

    Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...

  6. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  7. 摘抄转载前辈们的Java集合类总结

    本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...

  8. java集合类的学习(一)

    为何要用集合类:可以储存不同类型的数据,可以进行动态的删除和修改,不用考虑数组越界的问题. 软件开发常用的集合类:Vector,ArrayList,Stack,HashMap,Hashtable. 3 ...

  9. Java集合类简单总结(重学)

    java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...

随机推荐

  1. DB2 sql报错后查证原因与解决问题的方法

    1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703  检测到一个未定义的列 ...

  2. 从hash算法到java hashcode()

    转载 https://blog.csdn.net/Walk_er/article/details/74976146 hash算法是一个摘要算法(yy:描述性算法:可以给一个物体确切的描述,但是不能通过 ...

  3. 9月list

    开学了,我已经是大三的老学姐了,难受! 哇,时间过得好快啊,感觉自己快毕业了,肿么办!!! 9月了,快一年了,其实很多东西都变了,比如你. 9月4日的list:

  4. syslog系统日志、事件日志分析、EventLog Analyzer

    syslog系统日志.事件日志分析.EventLog Analyzer Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机.服务器.网络设备.数据库以及 ...

  5. python学习 day09 (3月14日)----函数

    一.函数的进阶 1.1 动态参数 1.2* ** 1.3*args , **kwargs 1.4 函数的注释 1.5名称空间 1.6函数的嵌套全局变量 : 贴边写的局部变量 : 不是贴边写的. ''' ...

  6. kbmMW均衡负载与容灾(1)(转载红鱼儿)

    kbmMW为均衡负载与容灾提供了很好的机制,支持多种实现方式,现在看看最简单的一种,客户端控制的容灾和简单的负载均衡. 现在,我们将kbmMWServer部署到不同的服务器,或者在同一服务器部署多份实 ...

  7. vue2.0 移动端,下拉刷新,上拉加载更多插件 转:

    转自:http://www.cnblogs.com/gmajip/p/7204072.html <template lang="html"> <div class ...

  8. docker 加速器配置目录

    centos 7 : /lib/systemd/system/docker.service

  9. 端口报错listen eaddrinuse:::xxx

    端口报错 listen eaddrinuse:::xxx 表示这个端口被占用 结束正在使用此端的程序即可.

  10. Python里的拷贝

    可变数据类型:list.dict 不可变数据类型:int.float.string.tuple 引用 https://github.com/taizilongxu/interview_python#4 ...