黑马程序员技术交流社区
标题:
【记录】代码练习-集合总结
[打印本页]
作者:
Kevin.Kang
时间:
2015-7-21 11:07
标题:
【记录】代码练习-集合总结
本帖最后由 Kevin.Kang 于 2015-7-21 13:47 编辑
Collection和Map的区别:
Collection存储的是单独出现的元素,自接口Set元素唯一,子接口List元素可重复。
Map存储的是键值对形式的元素,键唯一,值可以重复。
Collection和collections区别:
Collection是单列集合的顶层接口,有两个子类Set和List
Collections针对集合进行操作的工具类,
集合:
Collection(单列集合)
List(有序,可重复)
ArrayList
底层数据结构数组,查询快,增删慢
线程不安全,效率高
Vector
底层数据结构数组,查询快,增删慢
线程安全,效率低
LinkedList
底层数据结构链表,查询慢,增删快
线程不安全,效率高
Set(无序,唯一)
HashSet
底层数据结构哈希表
哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
首先判断hashCode()是否相同
是:继续执行,判断equals()的值
true:相同,元素重复,不添加
false:不相同,添加到集合中
否:添加到集合中
LinkedHashMapn
底层数据结构哈希表和链表
链表保证数据的有序
哈希表保证数据的唯一
TreeSet
底层数据结构红黑树(自平衡的二叉树)
保证唯一性:
元素实现Comparable接口,用compareTo()方法进行比较。
集合实现Comparator接口,用compare()方法进行比较。
保证有序性:
自然排序:元素具有比较性
元素实现Comparable接口,根据compareTo()方法的返回值排序
比较器排序:集合具有比较性
集合实现Comparator接口,根据compare()方法的返回值排序
两种方法的方法实体几乎没有差别。
Map(双列集合)
Map存储键值对形式的元素,键唯一,值可以重复。数据结构仅对键有效。
HashMap
底层数据结构哈希表,线程不安全,效率高,键和值都可为null。
哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
首先判断hashCode()是否相同
是:继续执行,判断equals()的值
true:相同,元素重复,不添加
false:不相同,添加到集合中
否:添加到集合中
LinkedHashMap
底层数据结构哈希表和链表
链表保证数据的有序
哈希表保证数据的唯一
Hashtable
底层数据结构哈希表,线程安全,效率低,键和值不可为null。
哈希表依赖两个方法:hashCode()和equals(),这两种方法快捷键自动生成即可
首先判断hashCode()是否相同
是:继续执行,判断equals()的值
true:相同,元素重复,不添加
false:不相同,添加到集合中
否:添加到集合中
TreeMap
底层数据结构红黑树(自平衡的二叉树)
保证唯一性:
元素实现Comparable接口,用compareTo()方法进行比较。
集合实现Comparator接口,用compare()方法进行比较。
保证有序性:
自然排序:元素具有比较性
元素实现Comparable接口,根据compareTo()方法的返回值排序
比较器排序:集合具有比较性
集合实现Comparator接口,根据compare()方法的返回值排序
两种方法的方法实体几乎没有差别。
作者:
Kevin.Kang
时间:
2015-7-21 14:00
集合的选择:
按需求进行分析。
是否键值对形式:
是:Map
是否排序:
是:TreeMap
否:HashMap
不清楚就使用HashMap
否:Collection
是否唯一:
是:Set
是否排序:
是:TreeSet
否:HashSet
不清楚就使用HashSet
否:List
是否安全:
是:Vector
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList
不清楚就用ArrayList。
都不清楚就使用ArrayList。
作者:
oooohnick
时间:
2015-7-21 14:14
果断收藏啊!感谢分享!
作者:
Kevin.Kang
时间:
2015-7-21 14:22
集合常见方法和遍历:
Collection:
add():添加
remove():删除
contains():判断是否包含指定元素
iterator():迭代器
size():集合长度
遍历:
迭代器
增强for
List:
增加普通for,利用size()和get()方法。
Map:
put():添加
remove():删除
containskey(),containsvalue():判断是否包含指定的键(值)
keyset():获取所有键的Set集合
values():获取所有值的Collection集合
entrySet():获取键值对的Set集合
get():得到指定键所对应的值
size():集合长度
遍历:
两种方式:
获取所有键集合,遍历获取对应值
获取所有键值对集合,遍历获取所有键集合,使用Map.Entry接口下的getKey()和getValue()方法得到键值对对应的键和值。
作者:
eayonh
时间:
2015-7-21 14:47
谢谢分享
作者:
cloud1991
时间:
2015-9-20 10:07
楼主好给力
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2