无参构造(它调用的有参):建立一个默认容量为10的数组java
有参构造:根据传入的数组大小建立数组容量数组
add | 添加一个引用类型的元素 |
---|---|
Collections.addAll(集合,添加的元素) | 添加多个元素 |
注意:ArrayList不容许添加基本数据类型的元素,但能添加它们的包装类函数
包装类.parseXXX(字符串) 把字符串转成相应的包装类
String类型中有字母时转数字类型时会报NumberFormatException异常
String类型转成boolean类型时,只要字符串里面不是true,转换后都为false
线程
底层原理是遍历数组集合,用equals判断是否包含,因此自定义的类须要重写equals方法,不然比较不出来(比的地址)code
for(Iterator it=list.iterator();it.hasNext();){ System.out.println(it.next()); }
注意: 通常迭代器建议用一次,由于第一次迭代完,迭代器内部的cursor游标已经走到最后,再次迭代也是从上一次的尾部开始,建议用上方的写法
迭代器迭代过程当中不容许修改操做(如删除),由于底层用
checkForComodification()方法进行判断orm
有两个线程(线程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的值不一样时 }
注意:每次删除后,后面的元素会向前补位,每次只删除一个元素rem
底层根据传入的值和集合中的元素进行euqals比较,因此须要重写兹定义的类的equals方法(谁主张谁举证,删除谁就谁提供euqals方法),和contains同样字符串
清空集合it