Java集合框架知识梳理
目录
前言
数组储存数据缺点
- 数组一旦初始化,长度就是确定的
- 数组中元素的删除、插入效率低
- 需要连续的内存空间
而集合支持自动扩容,比数组查找快的多
一、Java集合框架体系
java.util.Collection:储存单个元素
|-------子接口:List:储存有序的、可重复的数据
|-------ArrayList(主要实现类)、LinkedList、Vector
|-------子接口:Set:储存无序的、不可重复的数据
|-------HashSet、LinkedHashSet、TreeSet
java.util.Map:储存一对一对的数据
|-------HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
二、Collection接口
1.Collection方法
添加
(1)add(E obj)
(2)addAll(Collection other)

判断
(3)int size()
(4)boolean isEmpty()
(5)boolean contains(Object obj)
(6)boolean containsAll(Collection coll)
(7)boolean equals(Object obj)

删除
(8)void clear()
(9) boolean remove(Object obj)
(10)boolean removeAll(Collection coll)
(11)boolean retainAll(Collection coll)

其它
(12)Object[] toArray()
(13)hashCode()
(14)iterator()

2.Collection子接口1:List
1.List接口方法
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。
• 插入
– void add(int index, Object ele)
– boolean addAll(int index, Collection eles)
• 获取
– Object get(int index)
– List subList(int fromIndex, int toIndex)
• 获取元素索引
– int indexOf(Object obj)
– int lastIndexOf(Object obj)
• 删除和替换
– Object remove(int index)
– Object set(int index, Object ele)

2.Lisr接口实现类
- ArrayList:List主要实现类,线程不安全,效率高,底层使用Object[ ]数组储存
- LinkedList:底层使用双向链表的方式储存
- Vector:List古老实现类,线程安全,效率低,底层使用Object[ ]数组存储
3.Collection子接口2:Set
1. Set接口概述
-
Set接口相较于Collection接口没有提供额外的方法
-
Set 集合不允许包含相同的元素
-
Set的常用实现类有:HashSet、TreeSet、LinkedHashSet。
2.Set实现类
1. HashSet:主要实现类,底层使用HashMap,即用数组+单向链表+红黑树结构进行存储
2.LinkedHashSet:是 HashSet的子类,在现有的数组+单向链表+红黑树结构基础上添加了一 组双 向链表,用于记录添加元素的先后顺序
3.TreeSet:底层使用红黑树存储
添加到HashSet和LinkedHashSet中元素要求重写equals( )和hashCode( )方法
三.Map接口
1. Map接口的常用方法
• 增、改
– Object put(Object key,Object value)
– void putAll(Map m)
• 删:
– Object remove(Object key)
– void clear()
• 查
– Object get(Object key)
– boolean containsKey(Object key)
– boolean containsValue(Object value)
– boolean isEmpty():判断当前map是否为空
– boolean equals(Object obj):判断当前map和参数对象obj是否相等
长度
– int size()
•遍历
– Set keySet():返回所有key构成的Set集合
– Collection values():返回所有value构成的Collection集合
– Set entrySet():返回所有key-value对构成的Set集合



2. Map的主要实现类
- HashMap:主要实现类,线程不安全,效率高可以添加null的key和value值,底层使用数组+单向链表+红黑树结构
- LinkedHashMap:是HashMap的子类,在数组+单向链表+红黑树结构基础上添加了一对双向链表,用于记录添加元素的先后顺序
- TreeMap:底层使用红黑树存储,需要考虑自然排序和定制排序
- Hashtable:古老实现类,线程安全,效率低,可以添加null的key或value值,底层使用数组+单向链表结构存储
- Properties:key和value都是String类型,常用来处理属性文件
更多推荐




所有评论(0)