java容器集合
java 集合分为 Collection 和 Map 两大类
Collection 是 Java 集合框架的顶层接口,它是对容器类进行增、删、改、查的定义,同时继承了 Iterable 接口,具有对集合或容器中的元素进行遍历的能力
Collection 继承了 Iterable 接口,具有了快速遍历的能力,Iterable 接口中定义了获取集合迭代器的方法 iterator(),该方法返回一个容器的迭代器,迭代器接口中定义 2 个方法用于结合 while 或 for 迭代
根据存储数据结构把 Collection 细分为两种子集合:
List:元素有序,可重复(不唯一)的集合,包含以下三个实现类:
ArrayList 是 List 接口的可变数组的实现类,可以自动拓容
Vector(已过时)
LinkedList 是 List 的实现类,底层数据结构是链表
Set:元素无序,唯一的集合,包含以下两个实现类:
HashSet 是 Set 接口的实现类,底层数据结构是 Hash 表/散列表,查找效率高、添加效率高、删除效率高
LinkedHashSet 底层数据结构是 Hash 表+链表,通过内部的链表维持添加次序,继承于 HashSet
TreeSet 是 Set 接口的实现类,底层数据结构是二叉树,排序后查询速度比 HashSet 快
Map 表示映射关系的集合,里面存储的元素是 key-value(键值对),键值对就表示映射关系,里面 key 唯一
包含有以下三个子集合:
HashMap 是 Map 的实现类,其中 key 是按照 HashSet 存储的
LinkedHashMap 是 Map 的实现类,其中 key 是按照 LinkedHashSet 存储的
TreeMap 是 Map 的实现类,其中 key 是按照 TreeSet 存储的
总结:
|
名称 |
存储结构 |
顺序 |
唯一性 |
查询效率 |
添加/删除效率 |
|
ArrayList |
顺序表 |
有序(添加) |
不唯一 |
高 |
低 |
|
LinkedList |
链表 |
有序(添加) |
不唯一 |
低 |
最高 |
|
HashSet |
Hash表 |
无序 |
唯一 |
最高 |
最高 |
|
HashMap |
Hash表 |
Key无序 |
Key唯一 |
最高 |
最高 |
|
LinkedHashSet |
Hash+链 |
有序(添加) |
唯一 |
最高 |
最高 |
|
LinkedHashMap |
Hash+链 |
Key有序( 添加) |
Key唯一 |
最高 |
最高 |
|
TreeSet |
二叉树 |
有序(升序) |
唯一 |
中等 |
中等 |
|
TreeMap |
二叉树 |
有序(升序) |
Key唯一 |
中等 |
中等 |
java容器集合的更多相关文章
- java容器---集合总结
思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...
- java 容器 集合 用法
Set,List,Map,Vector,ArrayList的区别 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└ ...
- Java编程技术之浅析Java容器技术
Java容器 集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一. 或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词.因为这几乎是我们日常开发里接 ...
- Java各种集合容器的总结
Java容器指的是List,Set,Map这些类.由于翻译的问题,问到集合,Collection这些指的都是它们几个. List ArrayList 随机访问快 LinkedList 插入删除快 这个 ...
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
- Java 容器(list, set, map)
java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java容器简要概述
java中集合框架的概述 java集合类主要用于保存对象的. 常用的集合对象: Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和 ...
随机推荐
- bzoj 3771: Triple 快速傅里叶变换 FFT
题目大意: 给出\(n\)个互不相同的物品,每个物品有价值\(x_i(x_i \leq 40000)\)如果可以从中取一个或两个或三个物品.问能够组合出来的所有价值和对应的方案数,全部输出.取值时,\ ...
- C++的函数重载与C参数个数不一致时的编译
C++的函数重载意味着函数名和返回值类型相同,但是参数个数和/或类型不同.在编译过程中编译器一般会把各个参数的类型连接到函数名内组成新的函数名,以区分各个重载函数. C语言不支持函数重载.但是有时候虽 ...
- Spring boot 学习 五:domain的定义
一 public class City implements Serializable 实现了Sericalizable接口,只是一种标志.表示可以被序列化. java的ObjectOutputStr ...
- C# DataGridView的單元格中只能輸入數字
控件類型:DataGridView 控件名稱:dgvGift_Condition 裏面用到的:IsNumeric.NotePastText.RestoreText 等請參見 前一日志“TextBox中 ...
- [poj1741]Tree(点分治+容斥原理)
题意:求树中点对距离<=k的无序点对个数. 解题关键:树上点分治,这个分治并没有传统分治的合并过程,只是分成各个小问题,并将各个小问题的答案相加即可,也就是每层的复杂度并不在合并的过程,是在每层 ...
- 来自word2013发布的测试文档
SWIG 是一个非常优秀的开源工具,支持您将 C/C++ 代码与任何主流脚本语言相集成. 此外,它向更广泛的受众公开了基本代码,改善了可测试性,让您的 Ruby 代码库某部分能快速写出高性能的 C/C ...
- 锐捷认证的一些问题&解决方法
scau锐捷校园网各种无法吐槽,认证有时候自己掉线了麻痹都打到boss了给我掉线,收费也坑爹,连铁通都比不上. 1.锐捷认证客户端已停止工作: 貌似是毒霸的问题,把金山毒霸关掉再试 2.获取ip地址信 ...
- Linux下使用doxygen+vim生成c语言源程序文档的方法
1.安装 doxygen 有两种获得 doxygen 的方法.可以下载预编译的可执行文件,也可以从 SVN 存储库下载源代码并自己编译.清单 1 演示的是后一种方法. 清单 1. 安装和构建 doxy ...
- 一个基于Tp3.2(thinkphp3.2)的工会管理系统
该系统包括11个模块. 会员管理模块 奖惩管理模块 运动会管理模块 新闻管理模块 文档管理模块 经费管理模块 电子提案管理模块 用户管理模块 权限管理模块 系统管理模块 系统的登录 系统主页 这里只是 ...
- 多行文字超出字数部分省略(主要解决不兼容;display: -webkit-box;的浏览器)
注明:内容来处https://www.cnblogs.com/ss977/p/5846176.html 1.现webkit内核的浏览器支持display: -webkit-box;属性, 所以网页中显 ...