ArrayList踩坑记录

public class ArrayListCode {
public static void main(String[] args) {
        String[] arr =new String[]{"admin"};
        Class clazz = arr.getClass();
        Class componentType = clazz.getComponentType();
        if (componentType !=null) {
            System.out.println("-->" + componentType.getName());
        }
        List arrayList =new ArrayList<>();
        arrayList.add("23");
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("93");
        arrayList.add("ew");
        arrayList.add("ag");
        arrayList.add("tg");
        arrayList.remove(1);
        arrayList.remove(3);
        for (int i =0; i < arrayList.size(); i++) {
              System.out.println(arrayList.get(i));
        }

      List copyList =new ArrayList<>();
//        List list = new ArrayList<>();
        CopyOnWriteArrayList list =new CopyOnWriteArrayList<>();
        list.add("a");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            String str = (String) iterator.next();
            list.remove(str);
            iterator.remove();
        }
        System.arraycopy(arrayList,0,copyList,0,6);
        for (int i =0; i < list.size(); i++) {
              System.out.println(list.get(i));
        }
}
//ArrayList  remove坑点
    @Test
    public void removeTest() {
        List integers =new ArrayList<>(5);
        integers.add(1);
        integers.add(2);
        integers.add(2);
        integers.add(4);
        integers.add(5);
        /**

*  foreach 底层实现了Iterator  modCount != expectedModCount
*  所以这样会报错java.util.ConcurrentModificationException
*/
//        for (Integer i:integers) {
//            integers.remove(i);
//        }
        /**
*    1 2 5
*/
        for (int i =0; i < integers.size(); i++) {
                if (integers.get(i)%2==0){
                    integers.remove(i);
                }
          }
          System.out.println(integers);
    }
/**
* List.remove()有两个,一个 public E remove(int index),一个是public boolean remove(Object o) ,那下面的结果是什么:
* public boolean remove(Object o)  是List的父类Collection的
*/
    @Test
    public void testRemove(){
        List integers =new ArrayList<>(5);
        integers.add(1);
        integers.add(2);
        integers.add(3);
        integers.add(4);
        integers.add(5);
        System.out.println(integers);
        integers.remove(1);
        System.out.println(integers);
    }
/**
* Arrays.asList()的add方法没有实现所以直接add会报错,
* 解决方案:可以用new ArrayList<>(Arrays.asList("a","b")); 包一层
*/
    @Test
    public void testRemove3(){
        List list = Arrays.asList("a","b");
//        List list = new ArrayList<>(Arrays.asList("a","b"));
        list.add("c");
        System.out.println(list);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容