Collection是Java中的一种单列集合·,即每次添加只能添加一个元素。它是单列集合的祖宗接口,其功能是全部单列集合都可以使用的
常用方法:
- public boolean add(E e) 将特定对象添加到当前集合中
- public void clear() 清空集合
- public boolean remove(E e) 在集合中删除特定元素
- public boolean contains(Object obj) 判断当前集合是否包含特点对象
- public boolean isEmpty() 判断集合是否为空
- public int size() 获取集合长度
public class Main {
public static void main(String[] args){
//Collection是一个接口,不能直接创建对象,只能创建它的实现类对象(ArrayList)
Collection<String> coll = new ArrayList<>();
coll.add("abc");//添加
coll.add("bcd");
System.out.println(coll);
coll.remove("abc");//删除
System.out.println(coll);
System.out.println(coll.contains("bcd"));//判断是否包含
System.out.println(coll.isEmpty());//是否为空
System.out.println(coll.size());//获取长度
}
}
结果
遍历方式
迭代器遍历
迭代器遍历的特点是不需要利用索引
- Interator<E> iterator() 获取迭代器对象,默认指向集合的0索引
Iterator中常用方法
- boolean hasNext() 判断当前位置是否有元素
- E.next() 获取当前元素位置,并将迭代器对象移向下一个位置
public class Main {
public static void main(String[] args){
Collection<String> coll = new ArrayList<>();
coll.add("abc");
coll.add("bcd");
coll.add("eee");
Iterator<String> it=coll.iterator();
while(it.hasNext()){
String str=it.next();
System.out.println(str);
}
}
}
结果
当遍历完毕后,迭代器指向的就是最后没有元素的位置,指针不会复位,如果需要第二次遍历,需要再获取一个新的迭代器对象再进行遍历
另外,在迭代遍历时,不能使用集合的方式进行添加删除,只能使用迭代器的方式。迭代器只能进行删除,即
while(it.hasNext()){
String str=it.next();
if ("bcd".equals(str)){
it.remove();
}
System.out.println(str);
}
增强for遍历
增强for的遍历底层就是迭代器,是为了简化迭代器代码书写的
所有的单列集合、数组才能用增强for遍历
格式:
- for (元素的数据类型 变量名:数组或集合){ }
快捷生成方式:集合名字.for+回车
public class Main {
public static void main(String[] args){
Collection<String> coll = new ArrayList<>();
coll.add("abc");
coll.add("bcd");
coll.add("eee");
for (String s:coll){
System.out.println(s);
}
}
}
此时的s只是第三方变量,在循环中对其的修改不会改变原本集合中的值
Lambda表达式遍历
利用forEach方法进行遍历,进一步优先简写为lambda表达式(上篇文已介绍什么是lambda表达式)
public class Main {
public static void main(String[] args){
Collection<String> coll = new ArrayList<>();
coll.add("abc");//添加
coll.add("bcd");
coll.add("eee");
//匿名内部类的方式
coll.forEach(new Consumer<String>() {
@Override
//依次表示集合中的元素
public void accept(String s) {
System.out.println(s);
}
});
//lambda表达式
coll.forEach(s-> System.out.println(s));
}
}