Java – 集合Collection
简介
Collection 是Java中的集合祖宗类,它包含Java中所有与集合有关的方法接口,其中Collection接口有一些基础的共性方法,本文讲述Collection接口中一些共性方法的使用。
共性API
Collection 是所有集合的最上级父类,它包含以下这些共性api,所有集合都能执行
add(E e) 增加
把给定的对象添加到当前集合中
方法名
public boolean add(E e)
clear() 清空
清空集合中所有的元素
方法名
public void clear()
remove(E e) 删除
把给定的对象在当前集合中删除
方法名
public boolean remove(E e)
contains(Obj) 包含
判断当前集合中是否包含给定的对象
方法名
public boolean contains(Object obj)
注意:contains的底层方法只是调用了 Object.equals 方法进行对比,而equals方法的底层实现只是对对象进行“==”简单对比。
当我们需要对自定义对象进行特定的对比时,我们需要在自定义对象中重写 "equals" 方法。
isEmpty() 为空
判断当前集合是否为空
方法名
public boolean isEmpty()
size() 数量
返回集合中元素的个数、集合的长度
方法名
public int size()
迭代器 Iterator
迭代器是集合专用的遍历方式
获取迭代器
Iterator<E> iterator()
返回迭代器对象,默认指向当前集合的0索引
Iterator常用方法
boolean hasNext()
判断当前位置是否有元素,有元素返回true,没有元素返回falses
E next()
获取当前位置的元素,并将迭代器对象移向下一个位置。
获取迭代器并遍历数据
// 创建一个集合
Collection<String> c = new ArrayList<>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
c.add("ddd");
c.add("eee");
// 创建迭代器并遍历
Iterator<String> it = c.iterator();
while (it.hasNext())
{
String str = it.next();
System.out.println(str);
}
迭代器注意:
1.当指针到达最后时依然调用 next() 方法会报错 NoSuchElementException 异常
2.迭代器遍历完毕,指针不会复位,如果想重新遍历需要重新获取新的迭代器
3.循环中只能用一次next() 否则容易出现 NoSuchElementException
4.迭代器遍历时,不能用集合的方法进行增加或者删除
如果我们实在要删除,那么可以用迭代器提供的 remove 方法进行删除
如果要添加,暂时没有办法。
增强for遍历
增强 for 的底层就是迭代器,为了简化迭代器的代码书写的
它是JDK5之后出现的,其内部原理就是一个 Iterator 迭代器
所有的单列集合和数组才能用增强 for 进行遍历
增强 for 格式
for (元素的数据类型 变量名:数组或者集合) {}
方法实现
// 创建一个集合 Collection<String> c = new ArrayList<>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
c.add("ddd");
c.add("eee");
// 遍历增强,s 其实就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据
for (String s:List) {
sout(s);
}
IDEA中使用 list.for 即可弹出格式选项
注意:修改增强for中的变量,不会改变集合中原本的数据
Lambda表达式遍历
JDK8之后推出的Lambda表达式后,提供了一种更简单直接的遍历集合的方式
方法格式
结合 lambda 遍历集合
default void forEach(Consumer<? super T> action):
代码实现
我们先来看看使用匿名内部类的实现方法:
// 创建一个集合
Collection<String> c = new ArrayList<>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
c.add("ddd");
c.add("eee");
c.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
// 这里传来的 s 即是 ArrayList 集合的每一个遍历成员
System.out.println(s);
}
});
通过lambda可以简写成以下样式
// 创建一个集合
Collection<String> c = new ArrayList<>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
c.add("ddd");
c.add("eee");
c.forEach(s->System.out.println(s));
共有 0 条评论