集合框架

集合框架:容器框架、容器类

一、定义

可以存放一系列基本数据类型数据或者引用数据类型对象的对象。

二、分类:
1.数组:

特性:
1.在内存中,连续的固定长度的空间。
2.存储相同数据类型的数据。
3.有索引,从0开始,不能越界。
4.查找较快,插入和删除较慢。

2.List

ArrayList**、LinkedList*、Vector、Stack
特征:有序的、不唯一的、可为null、有索引

ArrayList
底层实现是数组,数据结构是线性表
有序的,不唯一,可为null,有索引(会越界)
初始容量是10,不够使用时扩容为原容量的1.5倍
查找较快,插入删除较慢
线程不同步,多线程使用不安全
实现同步:List list = Collections.synchronizedList(new ArrayList(…));
遍历方式:fori, foreach, iterator, forEach(), stream()

LinkedList
底层实现是node节点,数据结构是双向链表,也可以作为栈(先进后出)和队列(先进先出)
数据结构是链表,没有扩容的概念
有序的,不唯一,有索引,可为null
查找较慢,插入删除较慢
线程不同步的,多线程使用不安全的
List list = Collections.synchronizedList(new LinkedList(…));

list接口的方法(索引的操作)
add(E e)
get()
set()
remove()
clear()
isEmpty()
size()
indexOf()
LastIndexOf()
contains()

Deque接口的方法(首尾元素的操作)
addFirst(E e)
addLast(E e)
getFirst()
getLast()

offer(E e)
offerFirst(E e)
offerLast(E e)
peek()
peekFirst()
peekLast()
poll()
pollFirst()
pollLast()

push(E e)
pop()

Vector
底层实现是数组,数据结构是线性表
初始容量是10,每次扩容为原容量的2倍
线程同步的,多线程使用安全,单线程使用效率低

3.Set

HashSet*、LinkedHashSet、TreeSet*
特征:无序(LinkedHashSet有序,TreeSet可排序),唯一,可为null,无索引

HashSet
底层实现是HashMap的 key
默认初始化容量是16,加载因子是0.75,当存储的数据到达容量的0.75,扩容为原容量的2倍
容量上限为 MAXIMUM_CAPACITY = 1 << 30
不保证顺序(存入的顺序和实际排列顺序无关,获取元素时的前后顺序由Map中的hash()方法得到的混淆后的hash值决定),唯一,无索引,可为null
查找较慢,插入删除较快
线程不同步的,多线程使用不安全
Set set = Collections.synchronizedSet(new HashSet(…));

LinkedHashSet
继承了HashSet类,底层实现HashMap,数据结构是链表
保证顺序,唯一,可为null
查找较慢,插入删除较快
线程不同步,多线程使用不安全

TreeSet
底层实现是TreeMap , 数据结构是二叉树
不保证顺序(可以自定义排序),唯一,可为null
线程不同步,多线程使用不安全
TreeSet只能存储可排序的对象
1.元素具有可排序功能
元素类实现Comparable接口,重写CompareTo()方法,在元素被添加进容器时,会调用CompareTo方法和已经存在的元素进行比较
2.让容器具有排序功能
创建一个比较器类,实现Comparator接口,重写compare方法,使用TreeSet的有参构造创建对象,参数为创建的比较器类的对象

4.Map

HashMap**、LinkedHashMap、TreeMap、Hashtable、Properties**

HashMap
数据结构:数组 + 单链表 + 红黑二叉树
初始容量是16,加载因子是0.75,当存储的数据到达容量的0.75 时,扩容为原容量的2倍,容量上限为 1 << 30
无序,key唯一,value不唯一,key和value都可以为null

常用方法
put(key, value)
get(key)
remove(key)
size()
clear()
isEmpty()
containsKey(key)
containsValue(value)
keySet()
values()
entrySet()

遍历方式
keySet获取所有key,通过key获取所有value
entrySet获取包含多个entry对象的set集合,然后遍历set集合
通过Map集合的forEach()方法遍历

LinkedHashMap
底层实现和HashMap类同,数据结构是链表
有序,key唯一, value不唯一,key和value都可以为null

TreeMap
数据结构是红黑二叉树
无序(可排序,元素具有排序功能或容器具有排序功能),key唯一,key和value都可以为null
线程不同步的,多线程使用不安全

Hashtable
底层数据结构:数组 + 单链表
默认初始容量为11, 加载因子是0.75,当存储的元素个数达到容量的0.75时,扩容为原容量的2倍+1
无序,key唯一,value可重复,key和value都不能为null
线程同步的,多线程使用安全,单线程使用效率低

Properties
继承自Hashtable
可以作为配置信息的存储容器,也可以加载配置文件的配置信息
线程同步的,多线程使用安全

常用方法
setProperty(String key, String value)
getProperty(String key)
getProperty(String key, String defaultValue)
load(InputStream is)

三、体系结构
集合框架体系结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值