集合总结
集合总结
1.collection
a.set(无序,不可重复)
HashSet:底层实现原理为Hash表
存取数度块
内部是HashMap
TreeSet:底层实现是二叉树结构
排序存储方式
内部是TreeMap和SortedSet
LinkedHashSet:Hash表存储,并用双向链表记录存储插入顺序
内部是LinkedHsahMap
b.list(有序,可以重复)
ArrayList:底层实现原理是数组
数据查询速度快,但是增删数据速度慢
线程不安全
LinkedList:底层是双向循环列表结构
数据查询速度慢,但是增删数据速度快
线程不安全
Vector:底层实现原理是数组
数据查询速度快,但是增删数据速度慢
线程安全
c.Queue(在两端出入的List,也可以用数组或链表来实现)
2.Map(键不可重复,值可以重复)
HashMap:底层实现是Hasn表
线程不安全
key,value的值均可以为null
Hashtable:底层实现是Hash表
线程安全
key,value的值均不可以为null
TreeMap:底层实现是二叉树
3.集合常见方法及遍历方式
1.常见方法
增加add()put()(key-value)
删除remove()
包含contain()
长度size()
迭代器iterator()
获取get()
设置set()
是否为空isEmpty()
2.遍历方式
list集合:普通for循环 增强for循环 迭代器
set集合:迭代器 增强for
Map(不能直接使用迭代器)
KeySet()取出所有键,放入Set集合中,遍历
KeyValue()取出所有值,放入collection集合中,遍历
entrySet()取出所有entry对象,放入Set集合中,遍历
4.集合之间的比较
a.List和Set
list是有序可重复的,而set是无序不可重复的
list底层实现是数组,而set底层实现的链表
list数据查找效率高,而增加删除数据效率低,会改变元素的位置
set数据查找效率低,而增加删除数据效率高,不会改变元素的位置
b.ArrayList和Vector
两者都基于索引,且底层实现都是数组
两者都是有序的,且值可为null
Arraylist的效率比Vector高,使用更普遍
ArrayList是线程异步,所以线程不安全,而Vector是线程同步,所以线程安全
c.ArrayList和LinkedList
ArrayList底层是数组,而LinkedList底层是链表结构
对于随机访问的get()和set()(查询)操作,ArrayList要优于LinkedList,因为LinkedList要移动指针
对应增删数据,LinkedList优于ArrayList
d.HashMap和Hashtable
HashMap允许key-value的值为null,而Hashtable不允许
Hashtable是同步的,可以适用多线程环境,而HashMap不行,但效率高
Hashtable直接使用Hashcode对象值,而HashMap重新计算Hash值
Hashtable出现于jdk1.1,而HashMap出现于jdk1.2
e.HashSet和TreeSet
HashSet底层是哈希表,而TreeSet底层是红黑树
HashSet元素中可以放入一个null,而TreeSet元素中不可以有null
HashSet不能保证元素的排列顺序,TreeSet是SortedSet接口的唯一实现类,可以确保集合元素处于排序状态

浙公网安备 33010602011771号