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容器集合的更多相关文章

  1. java容器---集合总结

    思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...

  2. java 容器 集合 用法

    Set,List,Map,Vector,ArrayList的区别 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└ ...

  3. Java编程技术之浅析Java容器技术

    Java容器 集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一. 或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词.因为这几乎是我们日常开发里接 ...

  4. Java各种集合容器的总结

    Java容器指的是List,Set,Map这些类.由于翻译的问题,问到集合,Collection这些指的都是它们几个. List ArrayList 随机访问快 LinkedList 插入删除快 这个 ...

  5. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  6. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  7. Java 容器(list, set, map)

    java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...

  8. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  9. java容器简要概述

    java中集合框架的概述 java集合类主要用于保存对象的. 常用的集合对象: Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和 ...

随机推荐

  1. 媒体格式分析之flv -- 基于FFMPEG

    本来是应该先写一个媒体文件格式的简单讲解的,还没来得及写,以后再写.今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv. FLV 是FLASH V ...

  2. zynq基础

    zynq交叉编译环境设置 OpenCV在Zedboard上的移植 ubuntu 下串口调试工具 minicom安装与配置

  3. gitea (git服务器), 修改配置,更换IP地址

    使用的gitea项目管理git 服务器 (可以不用备份项目, 通过直接修改gitea配置, 直接使用) 步骤1 可以直接访问项目, 步骤2 ,如果已有项目IP地址固定为192.168.1.x, 新的I ...

  4. Jmeter-调整占用内存解决内存溢出

    启动jmeter.从启动jmeter的输出就可以看到,Modify HEAP  “” in the  jmeter batch file -Xmx512m  -Xms512m -Xms是初始内存,-X ...

  5. mvc 自定义 AuthorizeAttribute 验证逻辑

    public class AuthorizationFilterAttribute : AuthorizeAttribute { Dictionary<string, string> ro ...

  6. 启用数据库 aspnetstate 会话状态

    http://www.cnblogs.com/klzwj1988/archive/2010/05/10/1731723.html

  7. 关于WPF的弹出窗口

    几个重要的概念需要清楚: Show和ShowDialog区别 1.调用Show方法后弹出子窗口后,线程会继续往下执行.调用ShowDialog方法弹出子窗口后,线程会阻塞,直到子窗口关闭才继续往下执行 ...

  8. 转-tcp建立和释放详解

    建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删 ...

  9. 5、scala面向对象-类

    一.类 1.定义类 ##定义并调用 scala> :paste // Entering paste mode (ctrl-D to finish) class HelloWord { priva ...

  10. Unable to start services for VMware Tools

    vmware安装扩展工具报错的问题 vmware安装扩展工具报错Creating a new initrd boot image for the kernel.update-initramfs: Ge ...