List 元素是有序的、可重复

ArrayList、Vector默认初始容量为10

Vector:线程安全,但速度慢

底层数据结构是数组结构

加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容

扩容增量:原容量的 1倍

如 Vector的容量为10,一次扩容后是容量为20

ArrayList:线程不安全,查询速度快

底层数据结构是数组结构

扩容增量:原容量的 0.5倍+1

如 ArrayList的容量为10,一次扩容后是容量为15

Set(集) 元素无序的、不可重复。

HashSet:线程不安全,存取速度快

底层实现是一个HashMap(保存数据),实现Set接口

默认初始容量为16(为何是16,见下方对HashMap的描述)

加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容

扩容增量:原容量的 1 倍

如 HashSet的容量为16,一次扩容后是容量为32

Map是一个双列集合

HashMap:默认初始容量为16

(为何是16:16是2^4,可以提高查询效率,另外,32=16<<1 -->至于详细的原因可另行分析,或分析源代码)

加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容

扩容增量:原容量的 1 倍

如 HashSet的容量为16,一次扩容后是容量为32

java list负载_java集合的扩容和负载因子的总结相关推荐

  1. java concurrentmap原理_Java集合番外篇 -- ConcurrentHashMap底层实现和原理

    概述 距离上一次集合篇结束已经过了好久了, 之前说要写一下番外,但是太忙了,总也找不出相对松散的时间,也有点静不下心来,最近花了点时间,于是便有了这篇博客. 在开始之前先介绍一个算法, 这个算法和Co ...

  2. java linkedlist 长度_Java集合之LinkedList

    对于LinkedList来说,其基本特性如下: 基本特性 结论 元素是否允许为null 是 元素是否允许重复 是 是否有序 是 是否线程安全 否 与ArrayList是一致的. 源码分析 本文使用的是 ...

  3. java set复制_Java 集合系列之三:Set基本操作

    1. Java Set 1. Java Set 重要观点 Java Set接口是Java Collections Framework的成员. Set不允许出现重复元素-----------无重复 Se ...

  4. java jcf查看_Java 集合系列之一:JCF集合框架概述

    容器,就是可以容纳其他Java对象的对象.Java Collections Framework(JCF)为Java开发者提供了通用的容器 java集合主要划分为四个部分: Collection(Lis ...

  5. java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)

    概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明. TreeSet实现了S ...

  6. java list原理_Java集合:ArrayList的实现原理

    目录: 一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单 ...

  7. java map 排序_java集合框架面试题大集合

    1.介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)[基础] 答:Collection FrameWork 如下: Collection: ├List │├Link ...

  8. java list 接口_Java 集合 List接口

    [TOC] List接口 概述有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的 ...

  9. java 方法 示例_Java集合syncedSet()方法与示例

    java 方法 示例 集合类syncedSet()方法 (Collections Class synchronizedSet() method) synchronizedSet() method is ...

最新文章

  1. 用Visual C#做DLL文件
  2. VTK:Rendering之Cone4
  3. Memcached相关内容总结
  4. 在远程 CSM 课程中体验线上工作坊
  5. VNCserver在Fedora上配置过程
  6. Cannot resolve symbol 'R',Failed to resolve: constraint-layout
  7. 向程序发送命令失败_java程序员进阶:Redis分布式技术问题集锦
  8. 一个特殊的事件绑定程序(通用于各种浏览器)
  9. linux任务计划详解
  10. mysql给root开启远程访问权限
  11. 冒泡、选择、插入、希尔、归并、快速排序、排序的稳定性、测试算法时间消耗
  12. 远程通讯测试软件,USR-TCP232-304和虚拟串口软件通讯测试
  13. 泛微OA的http接口创建
  14. python二元函数图像在线绘制_使用python绘制二元函数图像的实例
  15. LibreELEC(kodi)安装 IPTV
  16. 物联网安全与安全分析
  17. 转 localStorage
  18. vue二级路由和重定向问题
  19. 解决ERROR Failed to compile with 3 errors These dependencies were not found: * pdfjs-dist/es5/buil问题
  20. go-issues#14592 runtime: let idle OS threads exit 内核线程暴增与线程回收问题

热门文章

  1. Spring RabbitMQ使用
  2. 【JUC并发编程09】读写锁
  3. 【PAT笔记】PAT中的散列思想
  4. FileZilla 连接不上虚拟机 ubuntu
  5. 微信公众号支付开发全过程(java版)
  6. 数据结构与算法-二叉查找树(java描述)
  7. javaGUI猜生日游戏
  8. JSP动作标签useBean--jsp:useBean 创建一个对象
  9. 有程序在记录你的键盘输入_12个用Java编写基础小程序amp;经典案例(收藏)
  10. python画画零基础_[零基础学python]画圈还不简单吗?