STL中的迭代器的使用

package com.text;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class text {
 public static void main(String[] args)throws Exception {
  
  
  //定义一个arraylsit 对象,然后赋值
  ArrayList arr=new ArrayList();
  arr.add("a");
  arr.add("b");
  arr.add("c");
  arr.add("d");
  
  //下标输出方式
  System.out.println("------下标输出-------");
  for(int i=0;i<arr.size();i++) {
   System.out.println(arr.get(i));
  }
  
  //foreach输出(jdk要大于等于1.5)
  System.out.println("------foreach输出-------");
  for(Object o:arr) {
   System.out.println(o);
  }
  
  //jdk1.8的语法糖
  System.out.println("------jdk1.8 语法糖-------");
  arr.forEach(c->System.out.println(c));
  //迭代器
  Iterator im=arr.iterator();
  while(im.hasNext()) {
   System.out.println(im.next());
  }
  
  //向下读取
  ListIterator it=arr.listIterator();
  System.out.println("------向下读取-------");
  while(it.hasNext()) {
   System.out.println(it.next());
  }
  
  //向上读取
  System.out.println("------向上读取-------");
     while(it.hasPrevious()) {
      System.out.println(it.previous());
     }
    
     //arraylist因子增长(默认长度是10  当长度为10的时候,增长因子数为0.5,向下取整数)
     System.out.println("arraylsit因子增长");
     for(int i=0;i<20;i++) {
      print(arr);
      arr.add(i);
     }
 }
 //使用反射查看属性
 static void print(ArrayList a)throws Exception {
  Class c=a.getClass();
     Field f=c.getDeclaredField("elementData");78
     f.setAccessible(true);
     Object[] o=(Object[]) f.get(a);
     System.out.println(o.length);
 }
}
posted @ 2019-05-18 17:01  chenjiahao  阅读(256)  评论(0编辑  收藏  举报