黑马程序员——java集合框架

来源:互联网 发布:notepad格式化php代码 编辑:程序博客网 时间:2024/05/16 07:10
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

先上图,照着图学:


有人会问,这么多的英文字母咋学啊?

这个问题问的好,话说为什么先上图呢,就是让你知道你所应该学的东西都在这里

仁哥给分析一下:

图中有4个特别黑的黑框框,都能想到这是重点,没错,就是重点,常用所以重点。然后再看他们的后缀,有List和Set还有Map,很明显这是3个接口,细心点就会发现里面List和Set都指向Collection,意思就是说这3个接口是继承关系。Map指向Collection但用的是黑色的箭头下面还多了个Procuces细心一想就知道这不是简单的接口继承接口,事实上他们只是处于一个框架之内,所以会产生这种关系,这也不足为奇就像一个Map的对象调用keySet()方法,返回的还是Collection。


(因为要原创,所以全部手打,好辛苦啊,希望我写的东西以前没人写过,这样自己的付出才值得)

有人会问,你这都讲吗,我记不住啊!!!

然后这就是这篇blog的存在的价值,我要告诉你集合框架的记忆法则:

Collection:所有的子类都只是是一个组,Map所有的子类都是键值关系

List  Tree Linked:带这后缀或者前缀的都是有序的,存取,联想下,List啥意思,有结构的Tree也一样

Linked:带着个的都有一个内部的链表,链表是啥,当然也是有序的了,链表大家都知道,就是存储空间不连续,不连续就会遍历的时候慢,查的慢。哪个是连续的呢?ArrayList是也

再谈Hash,你会说记得有个hashtable没错,是有这个东西,java里面也有,就是HashTable,但是很少用,原因是开销高,尽管确保了线程安全,但是通常不需要这么大的功能,HashMap足够,同理,常用的也是ArrayList不是LInkedList,Linked不好查找,对性能的影响比较大

有人问会问,仁哥我不知道hash,

好吧,我给你讲讲,有一个叫hash算法的东西(已经很久没接触算法了),通过一个hashcode来确保元素的唯一性,能够实现快速的查找,比如一个三维数组a[2][3][4],找到这里面的某个元素不需要2*3*4,需要的仅仅是2+3+4的复杂度,这就是质的飞跃(只能帮你到这里了)

再谈不可重复:

这个需要记忆的,不可重复的都有set所以,如果找不可重复又要有序的,就要再set下面找了,SetTree一般是用来什么排序什么的,那就是LinkedHashSet了,以前曾经见到一道题就是考这个的

另外需要知道的就是HashMap允许空值也是不可重复,这也是常考的,话说上面没有Vector,好吧,没有就没有,有些东西太强大会影响自身的发展


0 0