文章目录
一、Collection集合
1. 集合概述
集合是java中提供的一种容器,可以用来存储多个数据
2. 与数组区别
- 数组的长度是固定的,集合的长度是可变的。
- 数组中存储的是同一类型的元素,可以存储基本数据类型值。
- 集合存储的是对象,且对象的类型可以不一致。
3. 特点
Collection: 单列集合类的根接口,用于存储一系列符合某种规则的元素。
java.util.List
List的特点是元素有序,元素可重复。java.util.ArrayList
java.util.LinkedList
java.util.Set
Set的特点是元素无序,而且不可重复java.util.HashSet
java.util.TreeSet
4. Collection常用方法
把给定的对象添加到当前集合中
public boolean add(E e);
清空集合中所有的元素
public void clear();
把给定的对象在当前集合中删除
public boolean remove(E e);
判断当前集合中是否包含给定的对象
public boolean contains(E e);
判断当前集合是否为空
public boolean isEmpty();
返回集合中元素的个数
public int size();
把集合中的元素,存储到数组中
public Object[] toArray();
二、Iterator迭代器
1. 概念
Iterator接口时java集合中的一员
主要用于迭代访问Collection中的元素
java.util.Iterator
2. 常用方法
获取集合对应的迭代器,用来遍历集合元素的
public Iterator iterator();
返回迭代的下一个元素
public E next();
如果仍有元素可以迭代,则返回true
public boolean hasNext();
三、增强for
1. 格式
for(元素的数据类型 变量 :Collection集合or数组){
//操作代码
}
四、java.util.List
- java.util.List接口继承自Collection接口,是单列集合的一个重要分支
- 在List集合中允许出现重复元素,所有的元素以一种线性方式进行存储的
- 可以通过索引来访问集合中的指定元素
- 元素有序,存入顺序和取出顺序一致
4.1 List接口特点
- 它是一个元素存取有序的集合。元素的存入顺序和取出顺序一致。
- 它是一个带有索引的集合,通过索引可以精确的操作集合中的元素
- 集合中可以有重复的元素
4.2 List接口中常用方法
将指定的元素,添加到该集合的指定位置上
public void add(int index,E element);
返回集合中指定位置的元素
public E get(int index)
移除列表中指定位置的元素,返回的是被移除的元素
public E remove(int index);
用指定元素替换集合中指定位置的元素,返回的是替换前的元素
public E set(int index,E element);
4.3 ArrayList集合
java.util.ArrayList
集合数据存储的结构是数组结构。元素增删慢,查找快。
4.4 LinkedList集合
java.util.LinkedList
集合数据存储的结构是链表结构,方便元素添加、删除的集合。
结构图
4.4.1 LinkedList常用方法
将指定元素插入此列表的开头
public void addFirst(E e);
将指定元素添加到此列表的结尾
public void addLast(E e);
返回此列表的第一个元素
public E getFirst();
返回此列表的最后一个元素
public E getLast();
移除并返回此列表的最后一个元素
public E removeFirst();
移除并返回此列表的最后一个元素
public E removeLast();
从此列表所表示的堆栈处弹出一个元素。(源码底层为removeFirst())
public E pop();
将元素推入此列表所表示的堆栈。(源码底层为addFirst())
public void push(E e);
如果列表不包含元素,则返回true
public boolean isEmpty();
5.Verator集合
五、java.util.Set
集合特点
接口中的元素无序,且元素不重复。
5.1 HashSet集合
概述
Set接口的一个实现类,存储的元素不可重复,且无序。
底层的实现是一个java.util.HashMap支持。
HashSet集合存储数据的结构(哈希表)
JDK1.8前,哈希表底层使用数组+链表实现。使用链表处理冲突,同一Hash值的链表都存储在一个链表里,但是当一个链表中的元素较多时,即hash值相等的元素较多时,通过key值依次查找的效率较低。
JDK1.8后,哈希表存储采用数组+链表+红黑树实现,当链表长度超过(8)时,将链表转换为红黑树,减少查找时间。
3.LinkedHashSet
- 元素有序
- 不可重复