当前位置: 首页 > news >正文

集合框架学习(目录总贴,待更新。。。)

List接口

存放的对象是有序的,而且是可以重复的,关注索引,有一系列的索引方法,所以查询速度快,在修改元素时涉及到元素的位置移动,所以增加和删除元素慢。

Arraylist(数组)

  • 线程异步,线程不安全。
  • 动态数组结构,序号索引元素,随机访问set、get较快。
  • 每次扩充50%。

Vector(数组)

  • 使用了synchronized方法,线程同步,线程安全。
  • 动态数组结构,序号索引元素,随机访问set、get较快。查找一个指定位置的数据性能等同于ArrayList。
  • 每次扩充100%,在存储数据量较大时,性能优于ArrayList。

Vector的源码可以参考Arraylist(数组)在其方法上添加了synchronized关键字保证同步。

Linkedlist(链表)

  • 线程异步,线程不安全。
  • 链表结构,分配的内存不是连续的,只需要修改前后指针,所以新增删除元素速度比较快。

Set接口

Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

Hashset(HashMap)

  • HashSet的存储是无序的 ,没有前后关系,他并不是线性结构的集合。
  • 内部使用HashMap,将元素存储为键值对(键值对的键为将存储的值,键值对的值为假的Object对象(元素,Object)),所以不能存储equals相同的两个元素。
  • 一般情况下,无序的数据结构采用的算法效率是优于有序结构的。

TreeSet(TreeMap

  • TreeSet的存储是有序的 ,没有重复元素的集合。
  • 内部使用TreeMap,底层为树结构,使用它可以从Set中提取有序序列,同时元素必须实现comparable接口。

Map接口

Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

HashMap

  • 线程异步、线程不安全。
  • 根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。
  • 因为键对象不能重复,所以HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null。

Hashtable

  • 线程同步、线程安全的。
  • Hashtale在写入时比较慢,不允许记录的键或者值为null,同时效率较低。

TreeMap

  • 线程异步,线程不安全。
  • 能够根据键进行排序,默认按键值的升序排序,遍历TreeMap时得到的数据是排过序的。
  • 不允许键为null。

转载于:https://www.cnblogs.com/mosEast/p/8565902.html

相关文章:

  • Masonry适配
  • 【BZOJ】1086: [SCOI2005]王室联邦
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • vuex入门
  • zookeeper集群的安装
  • Godot-3D教程-02.3D性能和局限性
  • markdown编写技巧
  • vuex 存值 及 取值 的操作
  • java的IO流的一些测试
  • 扒一扒,你有多少校友在阿里?实习就来阿里云。
  • LVS+keepalived+nginx
  • 0/1背包经典例题 入门动态规划
  • HDU 2242 考研路茫茫——空调教室(边双连通)
  • Inno 安装前检测.net framework 4.0
  • MySQL5.7 添加用户、删除用户与授权
  • .pyc 想到的一些问题
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CSS魔法堂:Absolute Positioning就这个样
  • ESLint简单操作
  • happypack两次报错的问题
  • JavaScript创建对象的四种方式
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Lucene解析 - 基本概念
  • PHP 的 SAPI 是个什么东西
  • Python爬虫--- 1.3 BS4库的解析器
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • spring-boot List转Page
  • 检测对象或数组
  • 跨域
  • 物联网链路协议
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 小程序开发中的那些坑
  • 用简单代码看卷积组块发展
  • 字符串匹配基础上
  • 【云吞铺子】性能抖动剖析(二)
  • 阿里云ACE认证之理解CDN技术
  • 从如何停掉 Promise 链说起
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 容器镜像
  • #图像处理
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (AngularJS)Angular 控制器之间通信初探
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (七)Java对象在Hibernate持久化层的状态
  • (七)Knockout 创建自定义绑定
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET 依赖注入和配置系统
  • .net中我喜欢的两种验证码
  • /3GB和/USERVA开关
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码