Arraylist的遍历方式、java反射机制

  先定义ArrayList再添加几条数据:

       

ArrayList arr=new ArrayList();
    //往arrList中增加几条数据
    arr.add(1);
    arr.add(2);
    arr.add(3);
    arr.add(4);
    arr.add(5);
    arr.add(6);

 

 

      下标输出方式:

//下标输出方式 for循环
    for (int i = 0; i < arr.size(); i++) {
        //得到对象i中的值
        System.out.println(arr.get(i));
    }

   foreach的方式输出集合中的值:

for (Object o : arr) {
        System.out.println(o);
    }

      语法糖(Syntactic Sugar)的方式输出(需要在jdk1.8以上):

           //jdk.1.8语法糖的方式输出
        arr.forEach(x->System.out.println(x));

  迭代器的方式:

//迭代器方式
    Iterator iterator=arr.iterator();
    //while循环输出
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
    

  双向迭代器方式(注意:一定要先向下在向上读取,不然会出现向下读取不到数据的情况!):

ListIterator list =arr.listIterator();
    //向下读取
    while (list.hasNext()) {
        System.out.println(list.next());
    }
    //向上读取
    while (list.hasPrevious()) {
        System.out.println(list.previous());
    }

  java反射机制:

 

//向下取整
    //ArrayList默认的长度是10 当长度为10的时候,增长因子数位0.5倍,向下取整数
    for (int i = 0; i <20; i++) {
        print(arr); //调用的一个静态方法
        arr.add(i);//然后再添加循环对象
    }
}
static void print(ArrayList args) throws Exception{
    Class class1=args.getClass();
    Field elementData =class1.getDeclaredField("elementData");
    elementData.setAccessible(true);
    Object[] objects=(Object[]) elementData.get(args);
    System.out.println(objects.length);
}

 

谢谢观看!

 

posted @ 2019-05-20 12:07  沦陷  阅读(1091)  评论(0编辑  收藏  举报