Collection接口和常用方法
Collection接口实现类的特点
public interface Collection<E> extends Iterable<E>
- collection实现子类可以存放多个子元素,每个元素可以是Object
- 有些Collection的实现类,可以存放时能够重复的元素,有些不行
- 有些Collection的实现类是有序的(List),有些不是(Set)
- Collection接口没有直接的实现子类,是通过子类接口的Set和List实现的
import java.util.ArrayList;
import java.util.List;
public class CollectionMethod {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
//add添加单个元素
list.add("rick");
list.add(55); //等价于 list.add(new Integer(55))
list.add(true);
System.out.println(list);
// remove删除元素
list.remove(0); // 删除索引为0的元素
list.remove(true); // 删除指定元素
System.out.println("删除后"+list);
System.out.println(list.contains(55)); // 查找元素是否存在
System.out.println(list.size()); // 获取元素个数
System.out.println(list.isEmpty()); // 判断集合是否为空
list.clear(); // 清空集合
System.out.println(list);
ArrayList arrayList2 = new ArrayList();
arrayList2.add("jpg");
arrayList2.add("png");
list.addAll(arrayList2);
System.out.println(list);
System.out.println(list.containsAll(arrayList2)); // 判断多个元素是否存在
list.add("jpeg");
list.removeAll(arrayList2);
System.out.println(list);
}
}
Collection接口遍历元素方式一、使用Interator(迭代器)
- Iterator对象被称为迭代器,主要用于遍历Collection集合中的元素。
- 所有实现了Collection接口类都有一个iterator()方法,用于返回一个实现了Interator接口的对象,即可以返回一个迭代器
- 参考Iterator的结构图
- Iterator仅用于遍历集合,本身并不存放对象。
迭代器的执行原理
Interator interator=coll.iterator();
得到一个集合的迭代器
hasNext();
判断是否还有下一个对象
while(iterator.hasNext()){next();/*作用:1.向下移动2.把下移后的几何位置上的元素返回*/System.out.println(iterator.next());}
注意:在调用Iterator.next()方法之前必须要调用Iterator.hasNext()进行检测。否则下条记录无效,直接调用iterator.next()会抛出异常
集合增强for
public class CollectionInterator {
@SuppressWarnings({"all"})
public static <Interator> void main(String[] args) {
Collection collection = new ArrayList();
collection.add(new Person("rick","ranker",54));
collection.add(new Person("jack","general",87));
collection.add(new Person("gelnn","ranker",36));
System.out.println(collection);
// 遍历collection集合
//1.获取collection对应的迭代器
Iterator iterator = collection.iterator();
//2.使用while循环遍历
while (iterator.hasNext()){ // 判断是否还有下一个对象
// 返回下一个元素(类型Object)
Object obj=iterator.next();
System.out.println(obj);
}
//3.退出while循环后,Iterator迭代器只想最后一个元素
//4.需要再次遍历则需要重置迭代器
iterator=collection.iterator(); //重置
// 使用增强for循环
System.out.println("使用增强for循环实现:");
// 增强for,底层依旧是迭代器,可以简单理解为:增强for是简易版的迭代器遍历
for (Object person:collection){
System.out.println(person);
}
// 增强for,也可以在数组使用
}
}
class Person{
private String name;
private String rank;
private int age;
public Person(String name, String rank, int age) {
this.name = name;
this.rank = rank;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRank() {
return rank;
}
public void setRank(String rank) {
this.rank = rank;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", rank='" + rank + '\'' +
", age=" + age +
'}';
}
}