容器
Java用来在内存中存放对象的一系列的类
Iterator
所有实现了Collection接口的容器都有一个Iterator()方法返回一个 实现了Iterator接口的 对象
Iterator接口的 对象 就是迭代器,用于遍历容器
迭代器是唯一在遍历中安全删除元素的操作
唯一安全的原因:
for-each循环底层也是 iterator实现的,
这个迭代器在调用next方法时,会检查列表是否被修改过,如果被修改过,就会抛出ConcurrentModificationException异常。
解决方法:在Map或者Collection的时候,不要用它们的API直接修改集合的内容,如果要修改可以用Iterator的remove()方法
由于for-each的写法,使我们无法获得iterator对象,所以这种遍历方式不能进行删除操作。只好改成了比较土的方法实现了,如下:
for (Iterator it = desk.getPkers().iterator(); it.hasNext();) {
PKer pkerOnDesk =(PKer) it.next();
it.remove();
//add 需要用新数组
}
Collection
定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式
方法
itrrator()
返回实现了itrrator接口的itrrator对象(itrrator类型)
size()
返回此 collection 中的int类型元素数
isEmpty()
如果此 collection 不包含元素,则返回 true
clear()
移除此 collection 中的所有元素
contains(object a)
如果此 collection 包含元素a,则返回 true
containsAll(collection a)
如果此 collection 包含collection a的所有元素,则返回 true
boolean c.add(object a)
添加a元素
addAll(collection a)
添加a集合所有元素
remove(object a)
删除a元素
removeAll(collection a)
删除a集合所有元素
retainAll(collection a)
保留与容器a的交集的元素
toArray():将集合转换为object数组返回
容器<自定义对象类>进行contain(),remove()操作需要重写对象的equals和hashcode方法
demo:G:\project\demo\interface\equals
List
List中的数据对象有顺序并且可以重复。
额外方法(相比于collection)
set(int a,object b)
在指定位置用b替代,并返回原元素(object类型)
get(int a)
返回指定位置的object元素
remove(int a)
移除指定位置上的元素,并返回
indexOf(object a)
返回a元素首次出现的位置,没有a元素,返回-1
lastIndexOf(object a)
返回a元素最后出现的位置,没有a元素,返回-1
Set
Set中的数据对象没有顺序并且不可以重复。(两对象互相equals相等则重复)
无额外方法(相比于collection)
Map
定义了存储“键(key) — 值(value)映射对”的方法
额外方法(相比于collection)
put(object key,object value)
存map,返回value
get(object key)
返回key对应的value,没有返回Null
remove(object key)
删除key对应的map,返回value
containsKey(object key)
容器里有这个key,返回true
containsValue(object value)
容器里有这个value,返回true
size()
返回容器大小(int类型)
isEmpty()
容器为空,返回true
putAll(Map a)
将a的名值对存入容器,a中的会替换容器中key相同的value
clear()
清空