Java中的集合类实在是太丰富了,有常用的ArrayList、HashMap,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TressMap,有阻塞式的ArrayBlockingQueue,也有非阻塞式的PriorityQueue等,整个集合家族非常庞大,而且也是错综复杂,可以划分为以下几类:

(1)List

实现List接口的集合主要有:ArrayList、LinkedList、Vector、Stack,其中ArrayList是一个动态数组,LinkedList是一个双向链表,Vector是一个线程安全的动态数组,Stack是一个对象栈,遵循先进后出的原则。

(2)Set

Set是不包含重复元素的集合,其中主要的实现类有:EnumSet、HashSet、TressSet,其中EnumSet是枚举类型的专用Set,所有元素都是枚举类型;HashSet是以哈希码决定其元素位置的Set,其原理与HashMap相似,它提供快速的插入和查找方法;TreeSet是一个自动排序的Set,它实现了SortedSet接口。

(3)Map

Map是一个大家族,它可以分为排序Map和非排序Map,排序Map主要是TreeMap类,它根据Key值进行自动排序;非排序Map主要包括:HashMap、HashTable、Properties、EnumMap等,其中Properties是HashTable的子类,它的主要用途是从Property文件中加载数据,并提供方便的读写操作;EnumMap则是要求其Key必须是一个枚举类型。

Map中还有一个WeakHashMap类需要说明,它是一个采用弱键方式实现的Map类,它的特点是:WeakHashMap对象的存在并不会阻止垃圾回收器对键值对的回收,也就是说使用WeakHashMap装载数据不用担心内存溢出的问题,GC会自动删除不用的键值对,这是好事。但也存在一个严重问题:GC是静悄悄回收的(何时回收?God knows!),我们的程序无法知晓该动作,存在着重大的隐患。

(4)Queue

队列,它分为两类,一类是阻塞式队列,队列满了以后再插入元素则抛出异常,主要包括:ArrayBlockingQueue、PriorityBlockingQueue、LinkedBlockingQueue,其中ArrayBlockingQueue是一个以数组方式实现的有界阻塞队列,PriorityBlockingQueue是依照优先级组建的队列,LinkedBlockingQueue是通过链表实现的阻塞队列,另一类是非阻塞队列,无边界的,只要内存允许,都可以持续追加元素,我们最经常使用的PriorityQueue类。

还有一个队列,是双端队列,支持在头、尾两端插入和移除元素,它的主要实现类是:ArrayDeque、LinkedBlockingDeque、LinkedList。

(5)数组

数组与集合的最大区别就是数组能够容纳基本类型,而集合就不行,更重要的一点就是所有元素的集合底层存储的都是数组。

(6)工具类

数组的工具类是java.util.Arrays和java.lang.reflect.Array,集合的工具类是java.util.Collections,有了这两个工具类,操作数组和集合会易如反掌,得心应手。

(7)扩展类

集合类当然可以自行扩展了,想写一个自己的List?没问题,但最好的办法还是“拿来主义”,可以使用Apache的commons-collections扩展包,也可以使用Google的google-collections扩展包,这些足以应对我们的开发需要。

由点及面,一叶知秋------集合大家庭相关推荐

  1. 由点及面,一叶知秋----集合大家族

    Java中的集合类实在是太丰富了,有常用的ArrayList.HashMap,也有不常用的Stack. Queue,有线程安全的Vector.HashTable,也有线程不安全的LinkedList. ...

  2. 由点及面,一叶知秋——集合大家族

    Java中的集合类实在是太丰富了,有常用的ArrayList.HashMap,也有不常用的Stack. Queue,有线程安全的Vector.HashTable,也有线程不安全的LinkedList. ...

  3. [改善Java代码]由点及面,一叶知秋----集合大家族

    Java中的集合类实在是太丰富了,有常用的ArrayList.HashMap,也有不常用的Stack. Queue,有线程安全的Vector.HashTable,也有线程不安全的LinkedList. ...

  4. 【Java】恭喜你,你的代码获奖了(编写代码的151的建议)

    汝之观览,吾之幸也!本文主要摘抄Java代码的151的建议,让你的代码变得更加的优雅,从新手养成编写好代码的习惯. 编写程序是一件优雅的事,所以要学习一些基本的代码规范.本文参考<编写高质量代码 ...

  5. [ NeurIPS 2020 ] 一叶知秋 —— 基于“单目标域样本”的领域自适应方法

    [ NeurIPS 2020 ] 一叶知秋 -- 基于"单目标域样本"的领域自适应方法 引言 华中科技大学.浙江大学.百度研究院新作--基于"单目标域样本"的无 ...

  6. python集合操作班级干部竞选演讲稿_【必备】竞选班干部演讲稿集合8篇

    [必备]竞选班干部演讲稿集合8篇 使用正确的写作思路书写演讲稿会更加事半功倍.在现在的社会生活中,接触并使用演讲稿的人越来越多,你写演讲稿时总是没有新意?以下是小编精心整理的竞选班干部演讲稿8篇,欢迎 ...

  7. JavaSE——基础知识回顾13之集合(上半部分Collection部分)

    文章目录 本次文章就要开始真正进入到Java的核心部分了,集合是属于较难的部分,不仅难在不好理解,还有运用上,再加上这个东西的内容十分的多,体系也十分的庞大,需要花一段时间乃至更久来仔细学习,目前我会 ...

  8. do还是doing imagine加to_中学必背英语短语集合:54个doing动名词的固定搭配

    中学必背英语短语集合:54个doing动名词的固定搭配​mp.weixin.qq.com doing动名词是中小学英语教学中的重要内容.在小学的时候老师大概会把doing解释为一般进行时,但层级越往上 ...

  9. Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)

    zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权 ...

最新文章

  1. ASP.NET AJAX Preview 2
  2. c语言国家二级培训机构,国家计算机二级C语言培训教案.doc
  3. tensorflow python2迁移python3_tensorflow在python2和python3上的安装教程
  4. 和菜鸟一起学linux内核源码之启动篇
  5. 解决IIS出现“由于权限不足而无法读取配置文件”的问题
  6. 移植JDK,确实需要CPU指令级的工作
  7. 新手菜鸟防***必备知识
  8. 《圆明园的毁灭》教学设计方案
  9. 汽车诊断之UDS入门-DTC(Diagnostic Trouble Code)相关服务0x14,0x85
  10. vue3 provide和 reject
  11. 选择比努力重要,与谁同行比要去的远方重要
  12. [ACMMM2018]BeautyGAN: Instance-level Facial Makeup Transfer with DeepGenerative Adversarial Network
  13. 戴尔微型计算机重装WIN10系统,戴尔品牌机如何重装win10系统
  14. DBCO-PEG4-alcohol CAS:1416711-60-8 二苯基环辛炔-四聚乙二醇-乙醇
  15. gentoo USE 项目解释
  16. 干涉仪测向matlab程序,一种相关干涉仪测向算法的快速实现
  17. 卡巴斯基公布财报,2020年业务稳定增长
  18. 1997-2022年市场化指数/市场化指数分享/含计算原始代码
  19. 阻止搜索引擎抓取网站的工具_使用PHP将抓取的网站转变为搜索引擎
  20. 浪潮服务器销售量,35.6%市占率,浪潮服务器成为中国服务器市场“销量王”

热门文章

  1. 原生js提供的视频画中画api
  2. 有趣好玩的html页面,有趣的HTML5网站集合 - 小俊学习网
  3. Ubuntu18.04 快速返回桌面 【快捷键】
  4. 【单片机学习笔记】(6):字符串处理函数、变量的三种情况、用函数实现模块化程序设计、晶振与延时、指针
  5. EasyRecovery免费激活软件秘钥下载恢复教程及注意事项
  6. 洛谷P3374 树状数组模版1
  7. 双 JK 触发器 74LS112 逻辑功能。真值表_触发器的工作原理是什么
  8. Go-Proxy-Checker,一款基于Go编写的高性能代理服务器验证工具
  9. 基于Tensorflow 三层神经网络拟合二次函数(附代码与解析)
  10. Pandas数据分析groupby函数深度总结(1)