今天时间学习CopyOnWriteArrayList api,该类是JUC原子包中的类,通过单元测试代码把所有public api方法跑了一遍,大致了解了底层实现,初学乍练,有很多一知半解的地方,待后续有了深入理解再来补充
package test.java.util.concurrent;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse;
import org.junit.Test;
/**
* CopyOnWriteArrayList的测试类
*
* @date 2020-07-09 20:49:56
*/
public class CopyOnWriteArrayListTest {
/**
* 无参构造函数
* @Param
*/
@Test
public void testConstruct0()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(333);
System.out.println(testObj.toString());
}
/**
*通过Collection初始化CopyOnSriteArrayList
* @Param
*/
@Test
public void testConstruct1()throws Exception{
Set<Integer> sets=new HashSet<>();
sets.add(1);
sets.add(2);
sets.add(3);
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList(sets);
System.out.println(testObj.toString());
}
/**
*通过对象数组初始化CopyOnWriteArrayList
* @Param
*/
@Test
public void testConstruct2()throws Exception{
String[] s=new String[]{"1q","2q","3q"};
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList(s);
System.out.println(testObj.toString());
}
/**
*List的大小即Object[]的大小
* @Param
*/
@Test
public void testSize()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(1);
testObj.add(2);
testObj.add(3);
testObj.add(4);
System.out.println(testObj.size());
}
/**
*是否为空
* @Param
*/
@Test
public void testIsEmpty()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(1);
testObj.add(2);
testObj.add(3);
testObj.add(4);
System.out.println(testObj.isEmpty());
}
/**
* 是否包含指定元素
* @Param
*/
@Test
public void testContains()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(1);
testObj.add(2);
testObj.add(3);
testObj.add(4);
System.out.println(testObj.contains(3));
}
/**
*查询指定元素索引
* @Param
*/
@Test
public void testIndexOf1()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(1);
testObj.add(3);
testObj.add(2);
testObj.add(4);
System.out.println(testObj.indexOf(3));
}
/**
*从参数二开始找参数一的元素
* @Param
*/
@Test
public void testIndexOf()throws Exception{
CopyOnWriteArrayList testObj=new CopyOnWriteArrayList();
testObj.add(1);
testObj.add(3);
testObj.add(2);
testObj.add(4);
System.out.p