ArrayList的部分用法

ArrayList的用法

用法

构造函数

无参构造(它调用的有参):建立一个默认容量为10的数组java

有参构造:根据传入的数组大小建立数组容量数组

添加

add 添加一个引用类型的元素
Collections.addAll(集合,添加的元素) 添加多个元素

注意:ArrayList不容许添加基本数据类型的元素,但能添加它们的包装类函数

包装类.parseXXX(字符串) 把字符串转成相应的包装类
String类型中有字母时转数字类型时会报NumberFormatException异常
String类型转成boolean类型时,只要字符串里面不是true,转换后都为false线程

contains

底层原理是遍历数组集合,用equals判断是否包含,因此自定义的类须要重写equals方法,不然比较不出来(比的地址)code

遍历

for

foreach

迭代器

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的值不一样时
   }

删除

remove(int index)

注意:每次删除后,后面的元素会向前补位,每次只删除一个元素rem

remove(Object obj)

底层根据传入的值和集合中的元素进行euqals比较,因此须要重写兹定义的类的equals方法(谁主张谁举证,删除谁就谁提供euqals方法),和contains同样字符串

clear()

清空集合it

相关文章
相关标签/搜索