1.1.2 而Collection接口又继承了Iterable接口
1.1.3 Iterable接口里面有个抽象方法Iterator iterator();
因此Colleciton接口和List接口里面都会有Iterator iterator()这个抽象方法
List接口的下面的实现子类,一定会重写Iterator iterator(),目的是用于返回一个迭代器对象,通过迭代器对象可以去遍历集合里面的元素,因此这个方法是可行的
package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List list=new ArrayList();
list.add("123");
list.add(true);
list.add(10.5);
list.add(10.9f);
Iterator iterator=list.iterator();
System.out.println("使用迭代器遍历的结果为:");
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
Collection接口下面有个抽象方法size();
List接口是Collection的子接口,因此也有size()方法
然后其实现类会重写size()方法去获取集合中有效元素的个数,这个时候我们就相当于可以去确定集合遍历的范围
List接口有get(int index)方法,其实现类重写了该方法,因此可以通过它获取对应位置上的元素
package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List list=new ArrayList();
list.add("123");
list.add(true);
list.add(10.5);
list.add(10.9f);
System.out.println("使用for循环遍历(List接口下面的实现子类特有的遍历方式)");
//for循环遍历只有List接口下面的实现子类才能用,Set接口下面的不能这么用
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
}
}
}
粗略理解成封装好了的简单的迭代器;通过hasNext()去判断集合中是否还有有效元素,通过next()获取元素并把值赋值给Object o 这个对象,然后通过输出语句打印Object对象o的信息
for(迭代器的next()方法的返回值类型 标识符:集合实现类对象名){
System.out.println(标识符);
//迭代器的next()方法的返回值类型可以简单理解成集合里面可以存放元素的类型
//若可以存放任意元素,则返回值类型为Object,若只能存放整型,就返回Integer
}
package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List list=new ArrayList();
list.add("123");
list.add(true);
list.add(10.5);
list.add(10.9f);
//该集合中可以插入任意元素,因此底层调用迭代器对象.next()方法时所返回的类型为Object
System.out.println("用foreach(增强for循环,底层调用的是简单的迭代器)的遍历结果为:");
for (Object o: list
) {
System.out.println(o);
}
}
}