学习内容
集合
Iterator
迭代器,是集合的专用遍历方式
常用方法
next()
返回迭代器的下一个元素。
hasNext()
如果集合中有更多元素,则返回true
使用迭代器遍历
如图,可以实现遍历打印的效果。
Iterator it =new Iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Collection 集合
Collection
集合是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection
的元素。- JDK 不提供此接口的任何直接实现,提供更具体的子接口实现,例如
Set
和List
。
常用方法
方法名 | 说明 |
---|---|
add(E e) | 添加元素 |
remove(Object o) | 从集合中移除指定的元素 |
clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合是否存在指定函数 |
boolean isEmpty() | 判断集合是否为空 |
int size | 返回集合的长度,也就是集合中元素的个数iter |
iterator() | 返回此集合的迭代器,返回类型为 Iterator |
List 集合
List 集合,也称有序集合,也称序列。
在 List 集合中:
可以精确控制列表中的插入位置;
可以通过索引访问元素;
可以搜索列表中的元素;
允许重复的元素。
方法
add(int index, E element) | 在指定位置中插入元素 |
get(int index) | 返回指定索引位置的元素。 |
set(index, E element) | 修改指定所引处的元素,返回被修改的元素 |
remove(int index) | 移除指定位置的元素 |
Set 集合
特点:
Set 集合是 Collection 的子类。其特点为:
- 不包含重复元素
- 没有带索引的方法,因此不能使用普通的 for 循环遍历
- 是一个接口,不能直接实现。
HashSet
该类可以实现 Set 接口,对集合的迭代顺序不作任何保证。
Map 集合
概述
-
是一个接口,不能实例化
-
Map
集合的泛型由2部分组成,K 和 V。 Map< K ,V > 。例如:MAP< int ,String > K 是键的类型。 V 是值的类型。
-
Map
集合将键映射到值的对象。 -
不能包含重复的键
-
每个键可以映射最多一个值
-
实现类: HashMap
常用方法
方法名 | 说明 |
---|---|
V put(K key, V value) | 添加元素,将指定的值与该映射中制定的键相关联。 |
V remove(Object key) | 根据键删除对应元素 |
void clea() | 移除所有键值对元素 |
boolean containsKey(Object Key) | 判断集合是否包含制定的键 |
boolean containsKey(Object Key) | 判断集合是否包含制定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 返回集合长度,即键值对的个数 |
V get(Object key) | 根据键获取值。如果该键不存在于 Map 中,则返回 null |
Set <K> keySet() | 获取所有键的集合 |
Collection <V> values() | 获取所有值的集合 |
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象的集合 |
Collections 类
此类仅由静态方法组合或返回集合。包含对集合进行操作的多态算法。
常用方法
//将指定的列表升序排列
public static <T extends Compareable<?super T>> void sort(List<T> list);
//反转指定列表中的元素
public static void reverse(List<?> list);
//使用默认的随机源随机排列指定列表
public static void shuffle(List<?> list)
Collector
Collector
包含5个参数,传入参数不同,其行为不同。
public interface Collector<T, A, R> {
// supplier参数用于生成结果容器,容器类型为A
Supplier<A> supplier();
// accumulator用于消费元素,也就是归纳元素,这里的T就是元素,它会将流中的元素一个一个与结果容器A发生操作
BiConsumer<A, T> accumulator();
// combiner用于两个两个合并并行执行的线程的执行结果,将其合并为一个最终结果A
BinaryOperator<A> combiner();
// finisher用于将之前整合完的结果R转换成为A