数据类型中的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安全错误
数据库的锁怎样保障安全
深圳易人网络技术有限公司
商南软件开发
数据库主机主备网卡切换
数字城市软件开发
sqlbench创建数据库
长沙银行软件开发待遇如何
银联接口软件开发公司
服务器还要存储吗
无线网络技术研究展望
广州大道互联网科技有限公司
数据库<5
南通大学数据库试卷
观护苗网络安全课之四
软件开发测试工程师
武汉网络安全基地在哪里
软件开发分包的定义
苏州软件开发培训机构哪个好
苏州纽奥德软件开发
软件开发设计招聘
暴雪对服务器有什么影响
咸鱼二手服务器能买吗
计算机网络技术 中职课本
东莞睿尚网络技术有限公司
哪些操作用到了数据库
北京诚亿时代网络技术有限公司
软件开发工程培训学校
永恒之塔怀旧服捏脸数据库
数据库 wal
凤远网络技术
网络安全专业相关信息