1.为什么要使用集合。
①集合的定义:集合是一种无序、唯一的数据结构,它不允许重复元素存在。集合通常用于存储非重复的值,并且不关心元素的顺序。在集合中,元素的顺序是不重要的。数组是一种有序的数据结构,它可以存储多个元素,每个元素都有一个对应的索引。集合类全部支持泛型,是一种数据安全的用法。
②集合和数组的区别:数组长度固定,集合长度可变(可自动扩容);数组内容可以是八大基本数据类型(整型,浮点型,布尔型,字符型),也可以是引用类型(String)。集合只能是引用类型;集合可以存储不同类型,数组只能存储同一种类型。
③常用的集合类:
Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口(List,Set,Map)
java.util.List接口及其子类,List提供的是一个有序的集合;(单列集合)元素按进入先后有序保存,可重复。ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
java.util.Set接口及其子类,set提供的是一个无序的集合;(单列集合)仅接收一次,不可重复,并做内部排序。HashSet 使用hash表(数组)存储元素。
java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构;键值对的集合 (双列集合)
2.Collection集合的方法:
3.List和Set集合详解:
1、 实现List接口的集合类中的元素是有序的,且允许重复。List是Collection接口的子接口,它继承了Collection接口中的一些通用方法,并增加了一些针对有序列表的操作方法。
2、 List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可以根据序号存取集合中的元素。
ArrayList(重点,必须掌握)基于动态数组实现,查询和修改元素的效率较高;
底层数据结构是数组,查询元素快,添加和删除慢。
- 添加元素:add(element)、add(index, element) 在指定位置添加元素。
- 删除元素:remove(index)、remove(element) 删除指定位置或指定元素。
- 获取元素:get(index) 通过索引获取元素。
- 修改元素:set(index, element) 修改指定位置的元素。
- 元素索引:indexOf(element) 返回指定元素首次出现的位置,lastIndexOf(element) 返回指定元素最后一次出现的位置。
- 遍历元素:使用迭代器(iterator)、foreach循环或通过索引进行循环遍历。
LinkedList 基于双向链表实现,插入和删除元素的效率较高;
底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。
Vector(并不常用,了解) 线程安全的,但相对较少使用。