集合
概念:
用于保存数量不确定数据以及有映射关系的数据,在java.util包下,只能保存对象。(数组可以保存基本类型和对象)。
集合类主要有Collection和Map两个接口派生出去。
家族关系图:
Collection接口:
Map接口:
更具体的图:
更更具体的图:
https://img-blog.csdn.net/20160124221843905
from
http://blog.csdn.net/u010887744/article/details/50575735
整体介绍:
Collection派生出的子接口有Set、List和List,其中Set代表无序集合,即没有序号,因此不可重复,只能通过值来获取元素。List代表有序集合,可以重复,通过序号来区分,可以通过序号来获取元素。
Map保存的是键值对,也就是一个key到value的映射,key不可重复,value可以。
Collection
public interface Collection<E> extends Iterable<E> {}
成员:
Collection接口继承了Iterable接口,Collection的子类(子接口)都拥有(规定了)这些方法,包括常用的add、size、iterator等。
Iterator
又名迭代器,用来遍历Collection集合中的元素。
- hasNext();
- next();
- remove();
- 迭代的两种:
Collection books = new HashSet();
Iterator it = books.iterator();
while(it.hasNext){
String book = (String)it.next();
}
- 迭代时不能改变books的内容,否则引发异常。
Collection books = new HashSet();
for(String a :books){
syso(a);
}
- 在迭代集合的时候,尽量用iterator迭代,而不要用如下这种:
for(int i = 0;i<list.size();i++){
if(list.get(i)>5){
list.remove(i);
}
}
可以看到,迭代时修改迭代对象是不允许的,iterator会报fast-fail错误,而这种则不会报错。