标签:基本 迭代 boolean 数组集合 dal equals 容量 ORC 建议
无参构造(它调用的有参):创建一个默认容量为10的数组
有参构造:根据传入的数组大小创建数组容量
add | 添加一个引用类型的元素 |
---|---|
Collections.addAll(集合,添加的元素) | 添加多个元素 |
注意:ArrayList不允许添加基本数据类型的元素,但能添加它们的包装类
包装类.parseXXX(字符串) 把字符串转成相应的包装类
String类型中有字母时转数字类型时会报NumberFormatException异常
String类型转成boolean类型时,只要字符串里面不是true,转换后都为false
底层原理是遍历数组集合,用equals判断是否包含,所以自定义的类需要重写equals方法,否则比较不出来(比的地址)
for(Iterator it=list.iterator();it.hasNext();){
System.out.println(it.next());
}
注意: 一般迭代器建议用一次,因为第一次迭代完,迭代器内部的cursor游标已经走到最后,再次迭代也是从上一次的尾部开始,建议用上方的写法
迭代器迭代过程中不允许修改操作(如删除),因为底层用
checkForComodification()方法进行判断
有两个线程(线程A,线程B),其中线程A负责遍历list、线程B修改list。
-线程A在遍历list过程的某个时候(此时expectedModCount = modCount=N),线程启动,
同时线程B增加一个元素,这是modCount的值发生改变(modCount + 1 = N + 1)。 线程A继续遍历执行next方法时,
通告checkForComodification方法发现expectedModCount = N , 而modCount = N + 1,两者不等,
这时就抛出ConcurrentModificationException 异常,从而产生fail-fast机制。
解决办法:
使用iterator自己的remove方法
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();//当expectedModCount和modCount的值不同时
}
注意:每次删除后,后面的元素会向前补位,每次只删除一个元素
底层根据传入的值和集合中的元素进行euqals比较,所以需要重写兹定义的类的equals方法(谁主张谁举证,删除谁就谁提供euqals方法),和contains一样
清空集合
标签:基本 迭代 boolean 数组集合 dal equals 容量 ORC 建议
原文地址:https://www.cnblogs.com/gxh299988/p/14427095.html