黑马程序员—基础回顾集合体系总结(短篇)
来源:互联网 发布:淘宝联盟禁止自推自买 编辑:程序博客网 时间:2024/06/11 07:16
集合
|--Collection 是接口
|--List子接口
|--ArrayList 子类
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
|--Set
|--HashSet
底层数据结构是哈希表。
是如何保证元素的唯一性的?
它依赖于两个方法:hashCode()和equals()
顺序:
先判断hashCode(),
相同:继续equals()
返回true,不添加
返回fales,添加到集合
不同:添加到集合
|--LinkedHashSet
有序,唯一
底层数据结构是哈希表和链表。
由链表保证有序,由哈希表保证唯一。
|--TreeSet
底层数据结构是二叉树。
是如何保证元素的唯一性的?
根据返回值是否是0判断是否重复。
并且还要保证元素有序:
根据返回值是正数还是负数。
实现方案:
元素具备比较性:Comparable
集合具备比较性:Comparator
|--Map(Map的数据结构针对键有效)
|--HashMap
HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,
具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;
允许多条记录的值为 Null;
HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。
如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,
或者使用ConcurrentHashMap。
|--Hashtable
Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;
它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
|--TreeMap
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,
也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
2:到底该用谁?
需求:
键值对吗?
是:Map
需要对键排序吗?
是:TreeMap
不是:HashMap
注意:不知道使用哪种Map,使用HashMap
不是:Collection
元素唯一吗?
是:Set
需要对元素排序吗?
是:TreeSet
不是:HashSet
注意:不知道使用哪种Set,使用HashSet
不是:List
查询多:ArrayList
增删多:LinkedList
注意:不知道使用哪种List,使用ArrayList
3:ArrayList,LinkedList,HashSet,HashMap数据的存储和遍历
A:List
添加功能:add()
遍历功能:
a:迭代器
b:普通for
c:增强for
注意:
如果仅仅是为了遍历,使用a,c都可以。
如果在遍历的过程中,需要知道元素的位置,使用b。
B:Set
添加功能:add()
遍历功能:
a:迭代器
c:增强for
C:Map
添加功能:put()
遍历功能:
a:丈夫找妻子keySet()
b:结婚证找丈夫和妻子entrySet()
注意:建议使用a,好理解。
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
对于学习中发掘的问题,借鉴了老师视频中的讲解和演示资料,进行了部分归纳总结。
有利于在后面的学习中进行回顾,抓住重点。
希望自己和走过路过的朋友们都有些收获吧。
|--Collection 是接口
|--List子接口
|--ArrayList 子类
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
|--Set
|--HashSet
底层数据结构是哈希表。
是如何保证元素的唯一性的?
它依赖于两个方法:hashCode()和equals()
顺序:
先判断hashCode(),
相同:继续equals()
返回true,不添加
返回fales,添加到集合
不同:添加到集合
|--LinkedHashSet
有序,唯一
底层数据结构是哈希表和链表。
由链表保证有序,由哈希表保证唯一。
|--TreeSet
底层数据结构是二叉树。
是如何保证元素的唯一性的?
根据返回值是否是0判断是否重复。
并且还要保证元素有序:
根据返回值是正数还是负数。
实现方案:
元素具备比较性:Comparable
集合具备比较性:Comparator
|--Map(Map的数据结构针对键有效)
|--HashMap
HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,
具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;
允许多条记录的值为 Null;
HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。
如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,
或者使用ConcurrentHashMap。
|--Hashtable
Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;
它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
|--TreeMap
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,
也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
2:到底该用谁?
需求:
键值对吗?
是:Map
需要对键排序吗?
是:TreeMap
不是:HashMap
注意:不知道使用哪种Map,使用HashMap
不是:Collection
元素唯一吗?
是:Set
需要对元素排序吗?
是:TreeSet
不是:HashSet
注意:不知道使用哪种Set,使用HashSet
不是:List
查询多:ArrayList
增删多:LinkedList
注意:不知道使用哪种List,使用ArrayList
3:ArrayList,LinkedList,HashSet,HashMap数据的存储和遍历
A:List
添加功能:add()
遍历功能:
a:迭代器
b:普通for
c:增强for
注意:
如果仅仅是为了遍历,使用a,c都可以。
如果在遍历的过程中,需要知道元素的位置,使用b。
B:Set
添加功能:add()
遍历功能:
a:迭代器
c:增强for
C:Map
添加功能:put()
遍历功能:
a:丈夫找妻子keySet()
b:结婚证找丈夫和妻子entrySet()
注意:建议使用a,好理解。
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
0 0
- 黑马程序员—基础回顾集合体系总结(短篇)
- 黑马程序员——集合体系回顾和数据结构学习
- 黑马程序员—基础之集合回顾
- 黑马程序员_基础回顾之集合
- 黑马程序员 java基础回顾---集合框架
- 黑马程序员---回顾之集合框架总结
- 黑马程序员-集合体系
- 黑马程序员 集合体系
- 黑马程序员—Java基础---异常体系学习总结
- 黑马程序员——java基础——集合框架(一:单列集合(Collection体系))
- 黑马程序员——java基础——集合框架(二: 双列集合 (Map体系))
- 黑马程序员_java的集合类(对第十四课collection体系集合的总结)
- 黑马程序员_java的集合类(对第十六课Map体系集合的总结)
- 黑马程序员-集合体系汇总
- 黑马程序员--集合框架体系
- 黑马程序员_9_集合体系
- 黑马程序员_java集合回顾
- 黑马程序员——java语言基础部分——集合体系之Collection、Map
- startActivityForResult的初步学习
- 只考加法的面试题
- Ignatius and the Princess
- 算法竞赛入门经典3-1分数统计
- 八中OJ——1849 八数码 的错误代码
- 黑马程序员—基础回顾集合体系总结(短篇)
- 皇冠3D成型與最流行使用的材料
- logistic回归简介
- 底层因为接受到操作系统信号而停止的解决
- hibernate-懒加载
- linux驱动编程--中断
- libstagefright openmax编解码数据流向分析
- __bridge,__bridge_transfer和__bridge_retained详解
- Mysql表的类型