标签:接口 serial try 直接 释放 ram 遍历 不能添加 bool
分析完CopyOnWriteArrayList之后接着看CopyOnWriteArraySet。CopyOnWriteArraySet与CopyOnWriteArrayList相比不同之处就是不能添加重复的元素,Set集合没有按索引直接获取或修改或添加或删除的方法(get(int index),add(int index,E e),set(int index,E e),remove(int index))。
CopyOnArraySet类结构如下:
public class CopyOnWriteArraySet<E> extends AbstractSet<E> implements java.io.Serializable;AbstractSet是set接口的骨干实现,从而最大限度的减少了实现此接口所需的工作。
1、对于CopyOnWriteArraySet需要掌握以下几点:
·构造方法:CopyOnWriteArraySet();
·添加元素:即add(E)方法;
·删除对象:即remove(E)方法;
·遍历所有对象:即iterator(),在实际中更常用的是增强型的for循环去做遍历。
以上操作底层都是对CopyOnWriteArrayList操作,分析过CopyOnWriteArrayList,这些方法就比较简单了。
2、构造方法:
/**
/**
element
*/
public boolean add(E e) {
return al.addIfAbsent(e);//元素不存在时添加
}
/**
4、删除元素
public boolean remove(Object o) {
return al.remove(o);//调用CopyOnWriteArrayList的remove(Object o)方法
}
5、遍历所有元素
public Iterator<E> iterator() {
return al.iterator(); //调用CopyOnWriteArrayList的iterator方法
}
CopyOnWriteArraySet底层就是一个CopyOnWriteArrayList
CopyOnWriteArraySet在add元素的时候要遍历一遍数组,从而起到不添加重复元素的作用,但是由于要遍历数组,效率也会低于CopyOnWriteArrayList的add
Set集合没有按索引直接获取或修改或添加或删除的方法(get(int index),add(int index,E e),set(int index,E e),remove(int index))。
标签:接口 serial try 直接 释放 ram 遍历 不能添加 bool
原文地址:http://blog.51cto.com/3265857/2317506