欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java笔记之集合

程序员文章站 2022-04-14 12:29:48
...

前言

集合在数学意义上的概念是,对个数据放置在一起而建立起来的模型,这些数据类型可以不同;
在软件中的定义,一堆数据放置在一个空间中存储,将整个存储空间称为集合。
本文主要介绍collection接口下的List接口和Set接口,以及迭代器Iterator。

正文

Collection接口

1.Collection 层次结构 中的根接口。
JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 SetList)实现。
2.collection的主要子接口和实现类:
java笔记之集合

3.Collection的常用API:
java笔记之集合

List接口

list接口的实现类:
ArrayList和LinkedList

1.ArrayList

1)特性
1))是顺序表,方便查找
2))每次扩容,集合的长度在原来长度上增加一半。
3))集合默认的空间为10.
4))原理:变长的数组
5))ArrayList 是非线程安全的
6))在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException
7))ArrayList 的常用API:
java笔记之集合

2.LinkedList

LinkedList的特点
1.底层使用List 接口的链接列表实现。方便删除和插入。
2.默认长度为0.
3.LinkedList是非线程安全的。
4.在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException

迭代器

迭代器的特点

1.Iterator接口,本身是一种快速遍历集合的算法。
2.集合可以调用iterator方法获取迭代器。
3.迭代器是一个带有游标的线性表,用来记录结合的元素的地址。
4.迭代器与集合的关系草图:

1)相关代码片
<script src="https://code.csdn.net/snippets/275521.js" type="text/javascript"></script>
2)对应的草图
java笔记之集合

5.Iterator的常用API:
java笔记之集合

补充: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:
java笔记之集合

TreeSet

特点:
1.默认的空间为0
2.采用二叉树算法实现的
3.原理为TreeMap的Key
4.在集合的遍历过程中,不能使用ArrayList本身的方法删除和添加元素。
除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException
5.按照自然排序存放元素

总结

java笔记之集合