集合框架:
用于存储数据的容器。

从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
特点:
对象封装数据,对象多了也需要存储。集合用于存储对象。
对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长度的。
集合和数组的区别:
1.数组是固定长度的;集合可变长度的。
2.数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。
3.数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。
使用集合框架的好处:
1.容量自增长;
2.提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量;
3.允许不同 API 之间的互操作,API之间可以来回传递集合;
4.可以方便地扩展或改写集合,提高代码复用性和可操作性。
5.通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。
ArrayList:
1.ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
2.ArrayList 继承了 AbstractList ,并实现了 List 接口。
ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
objectName: 对象名。
ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
LinkedList:
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
LinkedList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
// 引入 LinkedList 类
import java.util.LinkedList;
LinkedList<E> list = new LinkedList<E>(); // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
HashSet:
1.HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
2.HashSet 允许有 null 值。
3.HashSet 是无序的,即不会记录插入的顺序。
4.HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
5.HashSet 实现了 Set 接口。
HashSet 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.HashSet; // 引入 HashSet 类
创建一个 HashSet 对象 sites,用于保存字符串元素,语法格式如下:
HashSet<String> sites = new HashSet<String>();
HashMap:
1.HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
2.HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
3.HashMap 是无序的,即不会记录插入的顺序。
4.HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
5.HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,
也可以是整型(Integer)的 key 和字符串(String)类型的 value。
创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value,语法格式如下:
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Iterator(迭代器)
Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。
迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
1.调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
2.调用 it.hasNext() 用于检测集合中是否还有元素。
3.调用 it.remove() 将迭代器返回的元素删除。
1574

被折叠的 条评论
为什么被折叠?



