首页 课程 师资 教程 报名

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

  • 2020-05-22 16:08:30
  • 2044次 动力节点

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

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

常用集合类比较

1.List类和Set类

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

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

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

2.Set和List对比

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

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

3.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

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

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常用集合类”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交