ArrayList 集合的几种遍历的方法

ArrayList 集合  也可称作动态数组(长度可变),在新建的时候是没有默认长度的,在新增数据长度小于10的时候,ArrayList 的长度会自动设置为10

 //了解更多可以按住Ctrl 再点击你需要查看的方法或者类名,  查看List源代码,ArrayList源代码

public static void main(String[] args) throws Exception {
  Arraylist    新增数据时长度是10   当长度为10的时候 增长是如何增长的?
  增长因子数位0.5倍,向下取整数。
  ArrayList arr= new ArrayList();
  arr.add("a");//给集合赋值
  arr.add("b");
  arr.add("c");
  arr.add("d");
  arr.add("e");
  System.out.println(arr.size());    //ArrayList 集合可以有重复对象
  System.out.println("-------下标输出方式");
  //下标输出方式
  for(int i=0;i<arr.size();i++) {
   System.out.println(arr.get(i));
  }
  System.out.println("-------foreach输出(jdk>1.5)");
  //foreach输出(jdk>=1.5)
  for(Object o:arr) {
   System.out.println(o);
  }
  System.out.println("-------jdk1.8的语法糖");
  //jdk1.8语法糖
  arr.forEach(x->System.out.println(x));
  System.out.println("-------jdk1.8的迭代器");
  //迭代器
  Iterator it=arr.iterator();
  while(it.hasNext()) {
   System.out.println(it.next());
  }
  
  ArrayList arr= new ArrayList();
  for(int i=0;i<20;i++) {
   print(arr);
   arr.add(i);
  }

//反向输出必须是先正向输出再反向输出。否则只会有正向没有反向输出
  ArrayList arr= new ArrayList(5);
  arr.add("a");
  arr.add("b");
  arr.add("c");
  arr.add("d");
  arr.add("e");
  ListIterator list=arr.listIterator();
  System.out.println("----------------下");
  while(list.hasNext()) {
   System.out.println(list.next());
  }
  System.out.println("----------------上");
  while(list.hasPrevious()) {
   System.out.println(list.previous());
  }
  
  //栈  可以比喻成一个车厢  最大的容量  3M
  //堆  可以比喻成一个火车  将内存中的零散的空间组成的一张链式表格
  //实现自定义的栈  mystack


 }

 //使用反射查看属性
 static void print(ArrayList   arraylist) throws Exception {
  Class c=arraylist.getClass();
  Field  elementData = c.getDeclaredField("elementData");
  elementData.setAccessible(true);
  Object[] objects=(Object[]) elementData.get(arraylist);
  System.out.println(objects.length);
 }

 

 

 


 

posted @ 2019-05-18 14:57  Me*源  阅读(5743)  评论(0编辑  收藏  举报