Collection详解
2022年2月18日
Collection详解
Colleition接口实现类的特点
public interface Collection<E> extends Iterable<E> {
-------------------------
}
- Collection:实现子类可以存放多个元素,每个元素可以是Object
- Collection的实现类,可以存放重复的元素,有些不可以
- Collection的实现类,有些是有序的(List),有些不是有序(Set)
- Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的
Colleition接口的常用方法
这里以ArrayList
来演示
public class CollectionTest {
public static void main(String[] args) {
List list = new ArrayList();
//添加单个元素
list.add("kkrot");
list.add(10);
list.add(true);
list.add("LR");
//删除指定元素
list.remove(0);//删除第一个元素
list.remove("kkrot");//删除指定元素
//查找元素是否存在
System.out.println(list.contains("LR"));
//获取元素个数
System.out.println(list.size());
//判断元素是否为空
System.out.println(list.isEmpty());
//清空
list.clear();
//添加多个元素
List listOther = new ArrayList();
listOther.add(1);
listOther.add("LR");
list.addAll(listOther);
//删除多个元素
list.removeAll(listOther);
}
}
Colleition接口遍历元素
方式一:迭代器
基本介绍
- Iterator对象称为迭代器,主要用于遍历Collection集合中的元素。
- 所有实现了Collection接口的集合类都有一个iterator0方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器。
- Iterator仅用于遍历集合,它本身并不存放对象。
迭代器的执行原理
Iterator iterator = list.iterator();//得到一个集合的迭代器
while (iterator.hasNext()) {//判断是否还有下一个元素
System.out.println(iterator.next());//获取下一个元素
}
在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出 NoSuchElementException异常
使用案例
public class CollectionIterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国","罗贯中",new BigDecimal("1.0")));
col.add(new Book("水浒传","施耐庵",new BigDecimal("2.0")));
col.add(new Book("西游记","吴承恩",new BigDecimal("3.0")));
Iterator iterator = col.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//当退出while 循环后,这时iterator指向最后一个元素
//iterator.next(); //NoSuchElementException
//如果希望再次遍历,需要重置我们的迭代器
iterator = col.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
@Data
class Book{
private String name;
private String author;
private BigDecimal price;
public Book(String name, String author, BigDecimal price) {
this.name = name;
this.author = author;
this.price = price;
}
}
方式二:for循环增强
增强for循环,可以代替iteratori迭代器,特点:增强for就是简化版的iterator,本质一样。只能用于遍历集合或数组。
public class CollectionFor {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国","罗贯中",new BigDecimal("1.0")));
col.add(new Book("水浒传","施耐庵",new BigDecimal("2.0")));
col.add(new Book("西游记","吴承恩",new BigDecimal("3.0")));
for(Object b : col) {
System.out.println(b);
}
}
}