一、解释
在Java中,集合和容器是非常重要的概念,用于存储和操作数据。在集合中,有单列集合和双列集合两种类型。
-
单列集合:
- Collection接口:定义了单列集合共有的方法
- List:可以有重复的元素
- ArrayList:基于数组实现的列表,可以动态扩展数组的长度
- LinkedList:基于链表实现的列表
- Vector:类似ArrayList,但是线程安全
- Set:不允许有重复元素的集合
- List:可以有重复的元素
- Collection接口:定义了单列集合共有的方法
-
双列集合:
- 键值对的集合,将键和值进行关联存储,形成一段数据
有人就要说了,既然集合与容器都是用于存储和操作数据,我们已经有了数组为何还要费尽心思设计集合这个概念呢
数组的特点总结如下:
- 一组数据类型相同的元素集合
- 创建数组时必须给定长度,且长度一旦创建后不能改变
- 当数组装满时,需要创建一个新的数组并将元素搬迁过去
- 不方便进行动态操作:
- 判断是否装满需要额外逻辑
- 如果数组中间删除或添加元素,需要移动后面的元素
这些限制和不便之处使得数组在某些场景下不够灵活,因此Java提供了更多种类的集合类来解决这些问题,使数据存储更加方便和高效。
二、ArrayList类
1、构造方法:
ArrayList arrayList =new ArrayList();
2、相关方法及解释
(1)add(element);先检测容量,不够则扩容至1.5倍(数组复制)
add(index,element);
(2)remove();删除并返回
(3)indexOf(element);从后查找并返回索引
(4)lastIndexOf(element);从后查找并返回索引
(5)set(index,element);给出索引,按照索引替换,并返回被替换的元素
(6)clear();清空集合
(7)isEmpty();判断集合是否为空
(8)constains(element);判断是否包含某一元素
(9)size();返回集合中元素的个数
(10)get(index);获取索引位置的元素
三、LinkList类
1、构造方法
LinkedList<数据类型> 对象名=new LinkedList<>();
2、相关方法及其解释
(1)add();默认添加到链表末尾
(2)add(index,element);指定位置添加元素
(3)get(index);获取索引位置上的元素
(4)indexOf(element);从前查找获取索引
(5)lastIndexOf(element);
(6)remove(element);删除指定元素
remove(index);删除索引位置的元素
(7)removeFirst();删除首元素
(8)removeLast删除末尾元素
(9)addFirst();在前插入
(10)addLast();在末尾插入
(11)pop();出栈
四、Iterator迭代器接口
(1)构造对象
Iterator 迭代器对象名=迭代器想要遍历的对象.iterator();
(2)获取下一个元素
.next()
(3)删除
.remove() Iterator只能单向遍历
五、LastIterator迭代器接口
1、构造方法
ListIterator<数据类型> 迭代器对象名=迭代器想要遍历的对象.listIterator();//默认从0开始
2、从前往后遍历
while(iterator2.hasNext()){
System.out.println(iterator2.next());
}
3、从后向前遍历
while (iterator1.hasPrevious()){//从后想前遍历
System.out.println(iterator1.previous());
}
4、从指定位置遍历
ListIterator<String> iterator3=arrayList.listIterator(1);//指定从1开始遍历
while (iterator3.hasPrevious()){//从后想前遍历
System.out.println(iterator3.previous());
}