![](http://img.blog.itpub.net/blog/2020/04/02/9d89d3008962c127.png?x-oss-process=style/bb)

容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。

# 一、Collection

![](https://upload-images.jianshu.io/upload_images/20352904-49090a7a132ecb70.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**1. Set**

- TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。 但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。

- HashSet:基于哈希表实现,支持快速查找,但不支持有序性操作。 并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。

- LinkedHashSet:具有 HashSet 的查找效率,且内部使用双向链表维护元素的插入顺序。

**2. List**

- ArrayList:基于动态数组实现,支持随机访问。

- Vector:和 ArrayList 类似,但它是线程安全的。

- LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。 不仅如此,LinkedList 还可以用作栈、队列和双向队列。

**3. Queue**

- LinkedList:可以用它来实现双向队列。

- PriorityQueue:基于堆结构实现,可以用它来实现优先队列。

# 二、Map

![](https://upload-images.jianshu.io/upload_images/20352904-5adabf8a9503433e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- TreeMap:基于红黑树实现。

- HashMap:基于哈希表实现。

- HashTable:和 HashMap 类似,但它是线程安全的, 这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。 它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全, 并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。

- LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69964492/viewspace-2684099/,如需转载,请注明出处,否则将追究法律责任。

java容器详解_详解Java 容器(第①篇)——概览相关推荐

  1. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  2. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  3. java的注解方式_详解Java注解的实现与使用方法

    详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...

  4. java新建一个女朋友_详解java创建一个女朋友类(对象啥的new一个就是)==建造者模式,一键重写...

    创建一个女朋友,她有很多的属性,比如:性别,年龄,身高,体重,类型等等,虽然每个女朋友都有这些属性,但是每个人找女朋友的要求都是不一样的,有的人喜欢男的,有的人喜欢女的,有的喜欢胖的,不同的人可以根据 ...

  5. java web底层原理_详解Java开发Web应用程序的底层原理

    前言 前面一篇文章,我从整个应用程序的整体以及跟运行环境的关系简单聊了一下我们现在常用的Spring框架的设计基础和准则,其中主要是控制反转和依赖注入,以及容器化编程等概念. 这里我不想去复述这些概念 ...

  6. java加载机制_详解Java类加载机制

    一:ClassLoader 从JVM结构图中可以看到,类加载器的作用是将Java类文件加载到Java虚拟机. HotSpot JVM结构,图片来自Java Garbage Collection Bas ...

  7. java让线程空转_详解Java编程中对线程的中断处理

    1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时--都需要通过一个线程去取消另一个线程正在执行的任务.Java没有提供一种安全直接的方法 ...

  8. java unsafe 详解_死磕 java魔法类之Unsafe解析

    问题 (1)Unsafe是什么? (2)Unsafe具有哪些功能? (3)Unsafe为什么是不安全的? (4)怎么使用Unsafe? 简介 本章是java并发包专题的第一章,但是第一篇写的却不是ja ...

  9. java容器有哪些_什么是Java容器?Java常见容器有哪些?

    我们在面试中或者在实际工作中,常常问到这个问题,那么最基本的我们首先要了解什么是java容器,再去学习java常见容器. 在百度上,是这么解释java容器的: 容器是一个Java 所编写的程序,原先必 ...

  10. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

最新文章

  1. Linux的cron和crontab定时任务
  2. 技巧:利用 Python 实现多任务进程
  3. 面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!
  4. Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类
  5. [云炬ThinkPython阅读笔记]1.5 值和类型
  6. 常用软件滤波算法---摘自:FeoTech
  7. 【概率论与数理统计】如何理解自由度n?
  8. SLAM: SLAM基本流程—VSLAM扫盲之旅
  9. python methodtype_Python的实例定属性和方法或类绑定方法
  10. ue4插件导入导出_Blender到UE4的无缝衔接
  11. 你第1个100万怎么赚的?
  12. 张艾迪(创始人): 我的梦想与成长之路
  13. vmnet0 子网ip和子网掩码_IP地址知识介绍及子网划分与汇总
  14. Select2异步ajax方式加载数据
  15. Exploring Complementary Strengths of Invariant and Equivariant Representations for Few-Shot Learning
  16. web开发框架技术有哪些?
  17. SQL Server认证培训与考试
  18. 为什么成为一名程序员这么难?
  19. 在postfix使用qq企业邮箱的smtp
  20. 【时间之外】2021年这些伪黑科技概念要提防

热门文章

  1. datatype未定义是什么意思_TypeError:无法读取未定义的属性'then'
  2. 华为笔记本会不会用鸿蒙,华为MateBook Pro笔记本为什么不用鸿蒙操作系统HarmonyO?...
  3. 怎么用计算机算立方数,计算器的使用方法
  4. 电工结业试卷_电工技术基础结业考试试卷
  5. python选择题题库百度文库_大学Python程序题题库
  6. php后台管理员登录密码错误,如果后台管理员的密码错误,我该怎么办,还有两种找回密码的方法...
  7. k8s--configmap
  8. Docker 数据持久化的三种方案
  9. Docker入门-安装
  10. 14-容器网络之host和none