数据类型中的Collection与Map是什么
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章给大家介绍数据类型中的Collection与Map是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Collection 接口类型1 List:有序(存入和
千家信息网最后更新 2024年11月19日数据类型中的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安全错误
数据库的锁怎样保障安全
云南专业软件开发服务商
计算机国家三级网络技术课程
计算机网络技术适合考研吗
趋势科技网络安全专家是什么
智能硬件 数据库
管理软件不用服务器
维护网络安全文明的图案
以软件开发为主业的上市公司
软件开发人员的税收优惠政策
医共体软件开发
普陀区软件开发技术服务业务
商店英雄服务器
数据库在线编译器
软件开发是信息化时代的
仙侠游戏服务器名称
大连网络安全生产项目
售后服务规范网络安全型号
番茄钟数据库
沂源租房软件开发
数据库2008r2怎么开启
达讯服务器
能够搭建服务器的代码是什么
浙江个人云服务器云主机
如何备份服务器系统成iso镜像
计算机网络安全数据的传输方式
cocos与服务器交互
吕梁公安局网络安全官网
思科网络技术学院题答案
会软件开发再做软件测试
北京net软件开发定制