数据类型中的Collection与Map是什么
发表于:2025-02-11 作者:千家信息网编辑
千家信息网最后更新 2025年02月11日,这篇文章给大家介绍数据类型中的Collection与Map是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Collection 接口类型1 List:有序(存入和
千家信息网最后更新 2025年02月11日数据类型中的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安全错误
数据库的锁怎样保障安全
计算机网络技术考研难么
米粉卡网络服务器
中石化网络安全竞赛答题
数据库中时间函数举例
软件开发合同有bug不付款
亚思捷软件开发平台
贵州新华电脑学院软件开发
软件开发大概多少钱一个月
有深度的互联网科技自媒体
石景山区网络技术服务需求
快鸽公司互联网科技有限公司
网络安全小报素材png
vue怎么读数据库
网络安全S盒
软件开发项目进度计划表甘特图
网络安全意识演示
人民公安大学网络安全与
ping哪个服务器延迟低
有赞平台分销数据库设计
成都网络安全保卫大队
网络丢包数据库数据传输
小学教师加强网络安全教育
北京安卓软件开发工程师
黎明杀机国服服务器在哪里
软件开发培训招生
数据库运维开发技巧
河北智慧城管软件开发哪儿好
数据库维码
老挝网络安全法
延安软件开发定做