STL中的几种迭代器的使用

package com.zking.JEEE;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Temp {
public static void main(String[] args) throws Exception {
//定义一个ArrayList 集合
// ArrayList arr=new ArrayList();
// arr.add("a");
// arr.add("b");
// arr.add("c");
// arr.add("d");
// arr.add("e");
// System.out.println(arr.size());
// System.out.println("-------------//下标输出方式");
// for (int i = 0; i <arr.size(); i++) {
// System.out.println(arr.get(i));
// }
//
// System.out.println("-------------//foreach输出(》=jdk1.5)");
// for (Object object : arr) {
// System.out.println(object);
// }
//
// System.out.println("-------------//jdk1.8+的语法糖");
// arr.forEach(a->System.out.println(a));
//
// System.out.println("-------------//迭代器");
// 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();
arr.add("a");
arr.add("b");
arr.add("c");
arr.add("d");
arr.add("e");
ListIterator list =arr.listIterator();
System.out.println("//向下的读取hasNext");
while(list.hasNext()) {
System.out.println(list.next());
}
System.out.println("//向上的读取hasPrevious");
while(list.hasPrevious()) {
System.out.println(list.previous());
}
}

// 使用反射查看属性

// ArrayList默认长度10当长度为10时,增长因子为0.5倍,向下取整
static void print(ArrayList arraylist) throws Exception {
Class c = arraylist.getClass();
Field elementData = c.getDeclaredField("elementData");
elementData.setAccessible(true);
Object[] arr = (Object[]) elementData.get(arraylist);
System.out.println("elementData.length=" + arr.length);
}
}

说明:

(一)Collection接口
1,集合框架的顶级接口
2,是Set和List的父接口
3,但不是Map的父接口

(二)List接口
1,特点:有序、对象可以重复
2,遍历方式
a,下标
b,foreach(>=jdk1.5)
c,迭代器Iterator

1)读取下一个记录
A.hasNext()是否存在下一个记录
B.Next()取值

2)读取上一个记录(ListIterator)
A.hasPrevious()是否存在上一个记录
B.Previous[]取值

猜你喜欢

转载自www.cnblogs.com/wjy0928/p/10885960.html