「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」
1.0 Collection集合分类
Collection 接口的接口 对象的集合(单列集合)
- List 接口:元素按进入先后有序保存,可重复
- LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
- ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
- Vector 接口实现类 数组, 同步, 线程安全
- Stack 是Vector类的实现类
- Set 接口: 仅接收一次,不可重复,并做内部排序
- HashSet 使用hash表(数组)存储元素
- LinkedHashSet 链表维护元素的插入次序
- TreeSet 底层实现为二叉树,元素排好序
1.1 Collection集合概述
- 是单列集合的顶层接口,它表示一组对象,这些对象也称Collection元素
- JDK不提供此接口的直接实现,它提供更具体的子接口(Set 和 List)实现
package ceshi;
import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);
}
}
1.2 Collection集合常用方法(查看所有源码快捷键)
| 方法名 | 说明 |
|---|
| public boolean add(E e) | 把给定的元素添加到当前集合中 |
| public boolean remove(E e) | 把给定的对象在当前集合中删除 |
| public void clear() | 清空集合中所有的元素 |
| public boolean contains(Object obj) [kənˈteɪnz] 包括 | 判断当前集合中是否存在指定的对象 |
| public boolean isEmpty() [ˈenpti] | 判断当前集合是否为空 |
| public int size() | 返回集合中元素的个数 |
| public Object[] toArray( ) | 把集合中的元素,储存到数组中 |
1.3 Collection集合的遍历
- Collection 集合遍历有三种方法:
- 迭代器
- foreach(增强for循环)
- DK 1.8 开始的新技术 Lambda 表达式(了解)
1.3.1 Iterator['lɪtəreɪtə]迭代器遍历集合
- lterator:迭代器,集合的专用遍历方式
Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
- 迭代器是通过集合的**iterator()**方法得到的,所以我们说它是依赖于集合而存在的
- Iterator中的常用方法
| 方法名 | 说明 |
|---|
| E next() | 获取迭代中的下一个元素 |
| boolean hasNext() | 如果迭代具有更多元素,则返回true |

1.4 Collections工具类
- 包:
java.util.Collections
- Collections 并不属于集合,而是用来操作集合的工具类
- 常用方法(全是静态修饰,用类名调用)
| 方法名 | 说明 |
|---|
| public static <T extends Comparable<?super T>> void sort(List list) | 将指定的列表按升序排序 |
| public static void reverse(List<?> list) | 反转指定列表中元素顺序 |
| public static void shuffle(List<?> list) | 使用默认的随机源随机排序指定的列表 |
package ceshi;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MapDemo {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(30);
list.add(20);
list.add(50);
list.add(10);
list.add(40);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
}
}