黑马程序员技术交流社区
标题:
刘意老师的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