集合总结

集合总结

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接口的唯一实现类,可以确保集合元素处于排序状态

posted @ 2019-02-21 17:17  孤单的一  阅读(208)  评论(0)    收藏  举报