Java中有哪些集合,集合中有哪些类?

Java中有哪些集合,集合中有哪些类?Java中所有的类都位于java.util包下,主要由两个接口派生出来,分别是Collection和Map.Collection包含了List和Set两大分支。Map是一个映射接口。Set、Map、List可以看做集合的三大类。而遍历集合的工具有Iterator和Enumeration;Arrays和Collection是操作数组集合的两个工具类。一、Java中的集合主要分为四类:1、L…

大家好,又见面了,我是你们的朋友全栈君。

Java中所有的类都位于java.util包下,主要由两个接口派生出来,分别是Collection和Map.Collection包含了List和Set两大分支。Map是一个映射接口。Set 、Map、List可以看做集合的三大类。
而遍历集合的工具有Iterator和Enumeration;
Arrays和Collection是操作数组集合的两个工具类。

一、Java中的集合主要分为四类:

1、List列表:有序的,可重复的;
2、Queue队列:有序,可重复的;
3、Set集合:不可重复;
4、Map映射:无序,键唯一,值不唯一。

二、集合类下包含的主要的实现类:
每种集合类型下包含的具体的实现类
1 List列表:有序,可重复

1.1 ArrayList数组列表,有序,可重复,内部是通过Array实现。对数据列表进行插入、删除操作时都需要对数组进行拷贝并重排序。因此在知道存储数据量时,尽量初始化初始容量,提升性能。

1.2 LinkedList双向链表,每个元素都有指向前后元素的指针。顺序读取的效率较高,随机读取的效率较低。

1.3 Vector向量,线程安全的列表,与ArrayList一样也是通过数组实现的,不同的是Vector是线程安全的,也即同一时间下只能有一个线程访问Vector,线程安全的同时带来了性能的耗损,所以一般都使用ArrayList。

1.4 Stack栈,后进先出(LIFO),继承自Vector,也是数组,线程安全的栈。但作为栈数据类型,不建议使用Vector中与栈无关的方法,尽量只用Stack中的定义的栈相关方法,这样不会破坏栈数据类型。

1.5 ArrayQueue数组队列,先进先出(FIFO)

2 Queue队列,有序、可重复

2.1 ArrayDeque数组实现的双端队列,可以在队列两端插入和删除元素

2.2 LinkedList也是双向链表

2.3 PriorityQueue优先队列,数组实现的二叉树,完全二叉树实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值)

3 Map映射/字典,无序,键值对,键唯一

在这里插入图片描述
3.1 HashMap哈希映射/字典,无序字典,键值对数据,key是唯一的,Key和Value都可以为null

3.2 TreeMap红黑树实现的key->value融合,可排序,红黑树是一种自平衡二叉查找树。

3.3 LinkedHashMap链表映射/字典,继承了hashmap的所有特性,同时又实现了双向链表的特性,保留了元素插入顺序。

4 Set集合,不可重复

4.1 HashSet基于HashMap实现的集合,对HashMap做了一些封装。与HaspMap不同的是元素的保存为链表形式,插入数据时遍历链表查看是否有相同数据,有则返回false,没有则返回true.

4.2 LinkedHashSet链表集合,继承自HashSet与LinkedHashMap相似,是对LinkedHashMap的封装。

4.3 TreeSet红黑树集合,与TreeMap相似,是对TreeMap的封装。

比较:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 强制删除文件 强制删除文件夹

    强制删除文件 强制删除文件夹
    在桌面新建一个txt文本打开这个txt文本,输入下面两行内容:
    del/f/s/q//?/%1
    rd /s/q//?/%1
    然后文件->另存为
    重新命名文件名为del.bat,并选择文件类型为“所以文件”,最后保存文件 
    一定要记着文件的位置了把要删除的文件拖到这个批处理del.bat上文件就静悄悄的删除了^-^

    2022年5月30日
    32
  • java实用工具类——使用java代码实现ftp上传下载工具类

    java实用工具类——使用java代码实现ftp上传下载工具类一、引言小编最近忙着学习项目构架上的一些技术,把实用的工具类整理下,单独放在一个项目。其他项目需要用直接使用maven依赖一下就可以使用了。项目中需要实现上传多张图片,由于多张图片,又担心并发量大。所以小编做了一个负载均衡,把上传后的图片保存到linux上的ftp中去,不了解linux上的ftp小编后期编写个教程。二、实现以下ftp的工具类,前提需要保证你的ftp服务器能够使用ftp客…

    2022年4月29日
    42
  • 大数据技术大致包含哪些内容「建议收藏」

    大数据技术大致包含哪些内容「建议收藏」关于大数据的概念,指的是无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。而大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。那么关于大数据的技术大致包含哪些内容?一、数据采集ETL工具负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。二…

    2022年5月28日
    44
  • VScode前端 插件

    VScode前端 插件copyVSCode前端常用插件</h1><divclass=”clear”></div><divclass=”postBody”>1.Aut…

    2022年7月25日
    19
  • python psutil模块查找进程_python模块 – psutil「建议收藏」

    python psutil模块查找进程_python模块 – psutil「建议收藏」一、psutil模块:1.psutil模块简介他是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如:ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice…

    2022年5月4日
    43
  • ReportingServies——SQLServer报表开发综合实例

    ReportingServies——SQLServer报表开发综合实例上一篇:ReportingServies报表开发实例教程如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中就是使用的sqlserver2012。使用此工具进行报表开发,将会十分快速而且方便。这里我通过一个综合实例来演示它的使用技

    2022年10月21日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号