首页 > Java资讯 > Java编程技术分享,Java常用集合类

Java编程技术分享,Java常用集合类

更新时间:2020-05-22 16:08 浏览65次 来源:动力节点


Java集合框架是Java设计者非常重要的一个设计灵感体现。相对数组,Java提供的集合框架是非常高效且方便的,同时也易于操作。根据我们平时书写代码的频率以及面试时经常被问到的知识点里,都不可或缺的提到集合框架,好多同学其实都学过集合框架,但是用的时候却发现自己从没仔细想过,我为什么要用这个集合呢?


Java编程技术分享,Java常用集合类


常用集合类比较


List类和Set类


List类和Set类是Collection集合接口的子接口。


Set子接口:无序,不允许重复。


List子接口:有序,可以有重复元素。


Set和List对比


Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。


List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。


Set和List具体子类


Set


|————HashSet:以哈希表的形式存放元素,插入删除速度很快。


|————LinkedHashSet:采用哈希表存储结构,同时使用链表维护次序。


|————TreeSet:采用二叉树(红黑树)的存储结构。


List


|————ArrayList:动态数组


|————LinkedList:链表、队列、堆栈。


Map接口


Map接口是独立的一个接口,与Collection接口没有关系。


特点是:数据是 key-value 映射


具体子类:


|———— HashMap


Key 无序 唯一 (Set)


Value 无序 不唯一 (Collection)


|———— LinkedHashMap


有序的HashMap 速度快


|———— TreeMap


有序 速度没有hash快


注意:HashSet底层结构其实就是调用HashMap


3、如何应对面试中关于集合框架的问题呢?


(1)、从线程安全方面比较


线程安全就是说多线程访问同一代码,不会产生不确定的结果。集合框架之间的区别和比较的一个点,也就是包括是否线程安全,一般情况下,线程安全就必定速度或效率相对就低,这是由设计决定的。


线程安全集合类与非线程安全集合类


LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;


HashMap是非线程安全的,HashTable是线程安全的;


StringBuilder是非线程安全的,StringBuffer是线程安全的。


(2)、从适用场景比较


对于查找和删除较为频繁,且元素数量较多的应用,Set或Map是更好的选择;


ArrayList适用于通过为位置来读取元素的场景;


LinkedList 适用于要头尾操作或插入指定位置的场景;


Vector 适用于要线程安全的ArrayList的场景;


Stack 适用于线程安全的LIFO场景;


HashSet 适用于对排序没有要求的非重复元素的存放;


TreeSet 适用于要排序的非重复元素的存放;


HashMap 适用于大部分key-value的存取场景;


TreeMap 适用于需排序存放的key-value场景。


最后附上集合框架比较的详细图


Java编程技术分享,Java常用集合类


集合框架不要死记硬背,一定要理解他们的数据结构及底层实现原理,实际工作中,我们常用的也就那么几个,只是面试过程中,会经常被问到它们之间的区别和差异!


以上就是动力节点java培训机构的小编针对“Java编程技术分享,Java常用集合类”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


热门课程推荐

全部班型支持免费试学

动力节点在线报名表(此信息已加密,请放心填写)

返回顶部