数据类型中的Collection与Map是什么
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍数据类型中的Collection与Map是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Collection 接口类型1 List:有序(存入和
千家信息网最后更新 2025年12月02日数据类型中的Collection与Map是什么
这篇文章给大家介绍数据类型中的Collection与Map是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Collection 接口类型1 List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。 接口类型2 Set:元素不能重复,默认不能保证顺序,提供有顺序实现。 接口类型3 Queue:线性表队列,有序,先进先出数据结构。 |--AbstractCollection:实现了Collection接口,不能创建实例,需要使用它的子实现类 |--AbstractList:实现了List接口,有序,抽象类,功能强大 |--ArrayList:内部是数组数据结构,是不同步(非线程安全)的。替代了Vector。查询的速度快 |--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快 |--Vector:内部是数组数据结构,是同步的。增删,查询都很慢,已不推荐 |--Stack:栈,先进后出,已不推荐 |--AbstractQueue:实现了Queue接口,有序,迭代顺序可以自然排序或者在自定义类中实现"Comparable"接口重写Comparator方法进行排序。 当队列中元素为null时,抛出异常,而不是返回false或null 字类必须定义offer()方法,该方法不允许插入null值。依靠自然顺序的优先级队列还不允许插入不可比较的对象 |--PriorityQueue:优先权队列,每次从队列中取出的应是具有最高优先权的元素 能够自动排序的队列,存储的元素排列并不是按照元素添加的顺序,而是内部会按元素的大小顺序进行排列 |---------|--ArrayDeque:实现了Deque(双端队列,Queue的子接口),有序,非线程安全,推荐当作栈或队列使用。不允许放入null元素 添加,删除,取值都有两套接口,它们功能相同,区别是对失败情况的处理不同。 一套接口遇到失败就会抛出异常,另一套遇到失败会返回特殊值(false或null)。 |--AbstractSet:实现了Set接口,无序,覆盖了 equals() 和 hashCode() 方法 |--TreeSet:实现了NavigableSet(SortSet子接口(Set子子接口))可导航接口, 基于TreeMap来实现,有序,可以自然排序或者在自定义类中实现"Comparable"接口重写Comparator方法进行排序。 |--HashSet:实现了Set接口,无序,采用hash算法 操作元素前,会先调用元素身上的hashcode方法,如果散列码发生碰撞,会触发equlas方法用于判定是否为同意个对象 JDK规定:如果两个对象相等,他们的hashcode值必然相等,如果两个对象的hashcode值相等,对象不一定相等 |--LinkedHashSet:双向链表结构,非线程安全,基于LinkedHashMap来实现,有序,序列顺序为插入顺序 list集合是可以完成对元素的增删改查。 List:特有的常见方法:有一个共性特点就是都可以操作角标。 1,添加 void add(index,element); void add(index,collection); 2,删除; Object remove(index): 3,修改: Object set(index,element); 4,获取: Object get(index); int indexOf(object); int lastIndexOf(object); List subList(from,to);
LinkedList和ArrayList的区别: LinkedList采用双向链表,如果需要对该种数据结构(集合)进行增删操作,使用LinkedList效率更高 ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于双向链表的数据结构 对于随机访问的get和set,ArrayList要优于LinkedList,因为LinkedList基于指针的移动。 ArrayList想要get(int index)元素时,直接返回index位置上的元素, 而LinkedList需要通过for循环进行查找, 虽然LinkedList已经在查找方法上做了优化,比如index < size / 2,则从左边开始查找, 反之从右边开始查找,但是还是比ArrayList要慢。这点是毋庸置疑的。 ArrayList想要在指定位置插入或删除元素时,主要耗时的是System.arraycopy动作,会移动index后面所有的元素; LinkedList主耗时的是要先通过for循环找到index,然后直接插入或删除。
Set存放不重复元素,默认不能保证顺序,提供有顺序 /--HashSet:采用hash算法,无序 操作元素前,会先调用元素身上的hashcode方法,如果散列码发生碰撞,会触发equlas方法用于判定是否为同意个对象 JDK规定:如果两个对象相等,他们的hashcode值必然相等,如果两个对象的hashcode值相等,对象不一定相等 /--LinkedHashSet:采用hash算法,有序 /--TreeSet: 采用Tree算法,有序
Map::映射类,key-->value,接口,与collection对应 |--AbstractMap:实现了Map接口 |--HashMap:无序,非安全的,但collection框架提供方法能保证HashMap synchronized |--LinkedHahMap:有序,非安全的,迭代顺序可以是插入顺序或者是访问顺序 |--HashTable:无序,安全的,几乎等效于HashTable,但线程安全还要考虑到性能问题,应该采用ConcurrentHashMap |--TreeMap:有序,同一key值默认为同一对象,迭代顺序可以自然排序或者在自定义类中实现"Comparable"接口重写Comparator方法进行排序 |--EnumMap:枚举映射,()内为枚举类,有序,迭代顺序为枚举顺序 |--IdentityHashMap:不是Map的通用实现,允许存放相同key值,仅当两key值地址一样是才认为相等无序,非安全的,允许key和value都为null
ashTable和HashMap的区别:HasnMap几乎完全等效HashTable HashTable线程安全,所有的操作是线程同步的,不需要线程同步的情况下使用HashMap, 如果高并发情况下,线程安全还要考虑到性能问题,应该采用ConcurrentHashMap。 HashMap非线程安全,HashMap允许存放null的value,允许存在null的key HashTable 允许存放null的value,不允许存在null的key 迭代操作:HashMap快速失败,HashTable安全失败
关于数据类型中的Collection与Map是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
元素
接口
顺序
方法
有序
安全
对象
数据
线程
结构
队列
数据结构
排序
类型
同步
迭代
两个
算法
自然
双向
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
韵桀教育网络技术科技
网络安全树形网络拓扑
直接连数据库吗
网络安全和维护专业
alv数据库han
数据库中怎么自动排序
项目管理软件开发需求分析
网络服务器拆解
软件开发中打补丁
贵广网络技术支持岗笔试题目
r620服务器内存安装
tbc祈福服务器时光徽章价格
软件开发行业税率
化饭圈乱象为网络安全手抄报
苹果提示服务器异常
一个软件开发团队有哪些职称
服务器地址类型如何判断
文学类数据库
集约化建设 网络安全
网络安全比赛的直播
数据库华南农业大学
服务器远程管理
山东标准软件开发市场报价
怎么取消网络安全模式
数据库分离sql
长沙贝肯软件开发
网络安全作文500字列题
数据库中怎么自动排序
庐阳区网络技术咨询优势
滁州保险软件开发需要多少钱