黑马程序员技术交流社区

标题: 刘意老师的Java集合基础知识汇总,好东西!! [打印本页]

作者: liujian5461267    时间: 2016-4-28 14:32
标题: 刘意老师的Java集合基础知识汇总,好东西!!
1:集合(自己补齐)
        Collection(单列集合)
                List(有序,可重复)
                        ArrayList
                                底层数据结构是数组,查询快,增删慢
                                线程不安全,效率高
                        Vector
                                底层数据结构是数组,查询快,增删慢
                                线程安全,效率低
                        LinkedList
                                底层数据结构是链表,查询慢,增删快
                                线程不安全,效率高
                Set(无序,唯一)
                        HashSet
                                底层数据结构是哈希表。
                                哈希表依赖两个方法:hashCode()和equals()
                                执行顺序:
                                        首先判断hashCode()值是否相同
                                                是:继续执行equals(),看其返回值
                                                        是true:说明元素重复,不添加
                                                        是false:就直接添加到集合
                                                否:就直接添加到集合
                                最终:
                                        自动生成hashCode()和equals()即可
                                       
                                LinkedHashSet
                                        底层数据结构由链表和哈希表组成。
                                        由链表保证元素有序。
                                        由哈希表保证元素唯一。
                        TreeSet
                                底层数据结构是红黑树。(是一种自平衡的二叉树)
                                如何保证元素唯一性呢?
                                        根据比较的返回值是否是0来决定
                                如何保证元素的排序呢?
                                        两种方式
                                                自然排序(元素具备比较性)
                                                        让元素所属的类实现Comparable接口
                                                比较器排序(集合具备比较性)
                                                        让集合接收一个Comparator的实现类对象
        Map(双列集合)
                A:Map集合的数据结构仅仅针对键有效,与值无关。
                B:存储的是键值对形式的元素,键唯一,值可重复。
               
                HashMap
                        底层数据结构是哈希表。线程不安全,效率高
                                哈希表依赖两个方法:hashCode()和equals()
                                执行顺序:
                                        首先判断hashCode()值是否相同
                                                是:继续执行equals(),看其返回值
                                                        是true:说明元素重复,不添加
                                                        是false:就直接添加到集合
                                                否:就直接添加到集合
                                最终:
                                        自动生成hashCode()和equals()即可
                        LinkedHashMap
                                底层数据结构由链表和哈希表组成。
                                        由链表保证元素有序。
                                        由哈希表保证元素唯一。
                Hashtable
                        底层数据结构是哈希表。线程安全,效率低
                                哈希表依赖两个方法:hashCode()和equals()
                                执行顺序:
                                        首先判断hashCode()值是否相同
                                                是:继续执行equals(),看其返回值
                                                        是true:说明元素重复,不添加
                                                        是false:就直接添加到集合
                                                否:就直接添加到集合
                                最终:
                                        自动生成hashCode()和equals()即可
                TreeMap
                        底层数据结构是红黑树。(是一种自平衡的二叉树)
                                如何保证元素唯一性呢?
                                        根据比较的返回值是否是0来决定
                                如何保证元素的排序呢?
                                        两种方式
                                                自然排序(元素具备比较性)
                                                        让元素所属的类实现Comparable接口
                                                比较器排序(集合具备比较性)
                                                        让集合接收一个Comparator的实现类对象
       
2:到底使用那种集合(自己补齐)
        看需求。
       
        是否是键值对象形式:
                是:Map
                        键是否需要排序:
                                是:TreeMap
                                否:HashMap
                        不知道,就使用HashMap。
                       
                否:Collection
                        元素是否唯一:
                                是:Set
                                        元素是否需要排序:
                                                是:TreeSet
                                                否:HashSet
                                        不知道,就使用HashSet
                                       
                                否:List
                                        要安全吗:
                                                是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
                                                否:ArrayList或者LinkedList
                                                        增删多:LinkedList
                                                        查询多:ArrayList
                                                不知道,就使用ArrayList
                        不知道,就使用ArrayList
                       
3:集合的常见方法及遍历方式
        Collection:
                add()
                remove()
                contains()
                iterator()
                size()
               
                遍历:
                        增强for
                        迭代器
                       
                |--List
                        get()
                       
                        遍历:
                                普通for
                |--Set
       
        Map:
                put()
                remove()
                containskey(),containsValue()
                keySet()获取所有键
                get()通过键找值
                value()获取所值的集合
                entrySet()获取所有键值对的集合
                size()
               
                遍历:
                        根据键找值
                        根据键值对对象分别找键和值
                       
作者: 某某帅    时间: 2016-4-28 14:46
66666666666好东西
作者: success560    时间: 2016-4-28 18:14
66666666666好东西
作者: songwenhao    时间: 2016-4-28 21:43
谢谢分享
作者: 风色月下    时间: 2016-4-28 22:09
确实好东西
作者: Master_Yu    时间: 2016-4-28 22:14
赞一个,好东西,谢谢了
作者: ruijin    时间: 2016-4-28 22:29
好东西啊!
作者: liusong    时间: 2016-4-29 18:26
赞一个!!!
作者: 进击的鬼笔环肽    时间: 2016-4-29 18:37
马克,明天复习完了看一遍
作者: zhangwenlihao    时间: 2016-4-30 00:39
666666666666
作者: 320215787    时间: 2016-4-30 11:52
好东西,真的很不错
作者: yoghurt29    时间: 2016-4-30 13:50
666666666666666666666感谢分享
作者: q2146310    时间: 2016-4-30 15:28
6666666感谢分享
作者: NeXtyin    时间: 2016-4-30 16:20
666666666666你是真牛啊
作者: 艺高人胆大    时间: 2016-4-30 16:39
6666666666666666666666
作者: liujian5461267    时间: 2016-5-1 08:11
技术分在弄的啊,我在还是2
作者: sxj    时间: 2016-5-1 08:57
我闻到了大牛的气息。
作者: danying    时间: 2016-5-1 08:57
谢谢分享。。。。》》》
作者: 纪先森    时间: 2016-5-1 09:42
感谢分享!~~~
作者: 子豪_kTa58    时间: 2016-5-1 13:14
好东西!
作者: liujian5461267    时间: 2016-5-1 14:44
技术分在哪换啊??
作者: xiangzhuni886    时间: 2016-5-1 14:50
好东西,谢谢分享在!!!!!!!!!
作者: itheima2016    时间: 2016-5-1 15:41
谢谢分享!
作者: 逆水z行舟    时间: 2016-5-1 16:25
66666666666感谢分享
作者: 安分的心灵    时间: 2016-5-1 19:30
谢谢分享
作者: 新晋猿工    时间: 2016-5-1 21:37
哈哈,刚刚学到这里,你就粘了出来,真是有缘啊~
作者: lz19918888    时间: 2016-5-1 21:48
赞!!!赞!!!赞!!!
作者: zhaokai123456    时间: 2016-5-1 22:40
不错不错真在复习这一块,
作者: liujian5461267    时间: 2016-5-2 12:42
联想小新笔记本5000块那个好用不
作者: zhoubinjian    时间: 2016-5-2 13:07
这个 真的是好东西,,正好 在集合框架这个地方需要多复习
作者: NoHarry    时间: 2016-5-2 13:20
谢谢分享

作者: 皮孟武    时间: 2016-5-2 13:37
谢谢楼主分享
作者: liujian5461267    时间: 2016-5-3 00:25
今天准备通宵学习,加油!!!!
作者: ayanamirei00    时间: 2017-1-23 14:11
谢谢分享 好东西!!一定要仔细看看
作者: newu    时间: 2017-1-23 19:11
6666666666666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2