java笔记之集合
程序员文章站
2022-03-02 09:39:42
...
前言
集合在数学意义上的概念是,对个数据放置在一起而建立起来的模型,这些数据类型可以不同;
在软件中的定义,一堆数据放置在一个空间中存储,将整个存储空间称为集合。
本文主要介绍collection接口下的List接口和Set接口,以及迭代器Iterator。
正文
Collection接口
1.Collection 层次结构 中的根接口。
JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和
List)实现。
2.collection的主要子接口和实现类:
3.Collection的常用API:
List接口
list接口的实现类:
ArrayList和LinkedList
1.ArrayList
1)特性
1))是顺序表,方便查找
2))每次扩容,集合的长度在原来长度上增加一半。
3))集合默认的空间为10.
4))原理:变长的数组
5))ArrayList 是非线程安全的
6))在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出
ConcurrentModificationException
7))ArrayList 的常用API:
2.LinkedList
LinkedList的特点
1.底层使用List 接口的链接列表实现。方便删除和插入。
2.默认长度为0.
3.LinkedList是非线程安全的。
4.在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
5.Iterator的常用API:
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出
ConcurrentModificationException
迭代器
迭代器的特点
1.Iterator接口,本身是一种快速遍历集合的算法。
2.集合可以调用iterator方法获取迭代器。
3.迭代器是一个带有游标的线性表,用来记录结合的元素的地址。
4.迭代器与集合的关系草图:
1)相关代码片
<script src="https://code.csdn.net/snippets/275521.js" type="text/javascript"></script>
2)对应的草图
补充:List的实现类 Vector
Vector,
Vector
类可以实现可增长的对象数组。
Vector的特性
1.顺序表,方便查找
2.每次扩容在原长度上增加一倍。
3.默认大小为10
4.Vector是线程安全。
Set接口
特点类似于数学集合,无顺序,不可重复,与List的特点相反。他只能有一个null值。
在这里讲讲他的实现类:HashSet,和TreeSet。
HashSet
基于哈希表的 Map 接口的实现.
特点
1.采用hash算法的Set,相当于hashMap的Key
2.默认的扔了为16,加载因子75%。
3.HashSet非线程安全。
4.内部原理:HashMap的key.
5.此实现不是同步的。
6.在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出
ConcurrentModificationException
常用的API:
TreeSet
特点:
1.默认的空间为0
2.采用二叉树算法实现的
3.原理为TreeMap的Key
4.在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出
ConcurrentModificationException
5.按照自然排序存放元素
总结
上一篇: 从后端设计来类比前端设计的思考