第3关:集合的体系结构
任务描述
本关任务:定义四种开发中常用的集合并添加数据。
相关知识
为了完成本关任务,你需要掌握:
1.集合的体系结构;
2.如何创建常见的集合。
在前两个关卡中我们学习的ArrayList集合只是集合的一个部分,Java中的集合可没那么简单呢,Java中的集合是一个大家族,接下来我们就来见识一下这个家族吧。
集合的体系结构
Java中的集合分为两大家族,一个是Collection家族,Collection家族有三大成员:List、Queue、Set,这三大成员有三个子类(实际还有很多,这里不一一列举)分别是,ArrayList,LinkedList,HashSet,这个家族有一个特点,那就是他们都是单身,集合中的元素都是独立存在的。
另一个就是Map家族了,这个家族的特点就是他们都是成双成对(key和value)一起出现的,让Collection家族很是羡慕啊_。
如何使用常见的集合
创建LinkedList集合,并添加数据
LinkedList list = new LinkedList();
list.add("hello");
创建HashSet集合,并添加数据
HashSet set = new HashSet();
set.add("hello");
创建HashMap集合,并添加数据
HashMap map = new HashMap();
map.put("name","张三");
以上就是创建几个常用集合创建实例并添加数据的方式,可以看到我们使用的方式除了LinkedList之外都是父类的引用指向子类对象,相信你还不陌生,这个我们在学习多态这个知识点的时候讲过,这种方式可以大大的提高程序的可扩展性。
通过上述代码可以发现Map集合添加数据和Collection家族成员添加数据的方式不一样,Map集合添加数据必须有两个,即一个是Key一个是Value。
面试官
Duang Duang Duang面试官来啦,快坐好,摆好姿势。
好了,我要开始提问了:
问:Set集合与List集合有什么区别呢?
答:Set集合中的数据不可重复,数据是无序的,List集合的数据可以重复,数据是有序的。
问:就没啦?[严肃脸]
答:哦哦,还有,Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变,List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变。
问:Map集合中的元素可以重复吗?
答:不可以!
问:你说一说,LinkedList和ArrayList的区别吧。
答:好嘞,LinkedList集合增删速度更快,ArrayList改查更快。
问:咳咳咳,下一位!
答:诶诶诶,别呀,我还没说完呢:
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。LinkedList是双向链表。
对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
面试官:嗯,这次算你过关,等下次通知吧!
我:…