集合自序整理集
1、集合概述
集合和数组一样都是对多个数据进行存储操作的容器
1. 集合和数组的区别
-
- 集合长度可变,数组长度固定
- 集合可以存储不同数据类型元素,数组只能存储单一数据类型元素
- 集合只能存储引用类型元素,数组既可以存储引用类型元素又可以存储基本类型元素
2. 集合框架图
2、Collection接口
单例集合,它包含了集合的基本操作和属性,它是List接口和Set接口的父接口1. Conllection接口基本方法
Collection接口通用方法来对集合实现基本操作:
add():添加元素
clear():清空元素
remove():删除元素
size():元素数量
toArray():集合转数组
contains():判断元素是否存在
isEmpry():判断集合是否为空
3、List集合
在Collection中LIst集合是进入先后有序保存可重复的类型,可对其中每个元素的插入位置进行精准地控制,可以通过索引来访问元素和遍历元素;在List集合中我们常使用到的就是ArrayList集合和LinkedList集合这个两个类1. List集合基本方法
List接口定义的特有基本功能:
set():把索引查询到位置的元素修改成指定的值,并返回修改前的值
get():获取指定位置的元素
indexOf():索引指定元素
listIterator():列表迭代器
subList():截取集合
2. ArrayList集合
ArrayList集合实现List接口,它得到来LIst集合框架的基础功能;ArrayList集合底层是通过数组来实现的,随着元素的增加而动态扩充;-
- 优点:查询快、效率高、可以存储重复值
- 缺点:增删慢、线程不安全
2.1. 泛型
对于ArrayList来说带有尖括号<>则代表泛型,表示着集合当中所有的元素全都是统一的类型,泛型只能是引用类型而不能是基本类型创建泛型
存储指定数据结构:
ArayyListlist = new ArayyList<>();
添加元素
list.add("李逍遥")
删除元素
list.remove(0)/list.remove("李逍遥")
获取指定元素
list.get(0)
存储对象:
ArayyList
2.2. ArrayList存储类型
在ArrayList集合中存储的指定数据结构都是以对象为单位,所有的数据类型都必须转换成包装类
-
-
- 自动装箱:基本类型转换成包装类(int => Integer)
- 自动拆箱:包装类转换成基本类型(Integer => int)
-
2.2.1. 基本类型与包装类型
| 基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
| bety | Bety |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
2.3. ArrayList见解
-
-
- ArrayList集合之所以和数组有着相似性功能,是因为ArrayList类内部封装类一个Object类型的数组,在ArrayList集合当中会有很多方法,比如index、indexOf都是在内部数组中调用Array对于的方法
-
-
-
- 频繁的往ArrayList中添加和修改元素都会引起装箱和拆箱操作,会存在影响内部Object数组的效率
-
-
-
- 数组扩容,每当ArrayList集合执行add()操作时,内部数组就会自动检查容量是否足够,容量足够则正常添加元素;容量不够时,数组会以自身容量的两倍来创建一个新的数组,将旧数组中数据存入到新数组,再旧数组丢弃掉;对于这个临界点扩容的操作会存在影响一些效率
-
3. LinkedList集合
LinkedList集合实现了LIst、Deque接口,底层是一个双向链表,属于线性表-
- 优点:增删快、允许空值存在、线程安全
- 缺点:查询慢
3.1. LinkedList使用
创建LinkedList方法
LinKedListlist = new LinKedList<>();
添加到首列/添加到末列/添加元素
list.addFirst("冰墩墩")
list.addLast("雪容融")
list.add("李逍遥")
list.push("等同于add()")
删除首列元素/删除元素
list.removeFirst("冰墩墩")
list.removeLast("雪容融")
list.remove("李逍遥")
4、Map接口
Map接口提供的是一种映射关系,存储元素是采用键值对方式(key-Value),能根据key快速的查询到Value值
-
- 特点:支持泛型、key值可重复/Value值不可重复
4.1. HashMap集合
HashMap是Map接口实现类,底层是基于数组+链表(哈希表)实现的;HashMap集合整体就是一个数组,数组每个下标就代表着一个链表,链表节点中Vaule是Object类型-
-
- 优点:无序排列
- 缺点:线程不安全
-
4.2. HashMap存储图
4.3. HashMap使用
创建HashMap方法:
HashMapmap = new HashMap();
添加元素
map.put("政治",90.0)
删除元素
map.remove("政治")
遍历HashMap
for(Map.Entryentry:map.entrySet()){
sout("key:"+entry.getKey+",Value:"+entry.getValue);
}