我写的学习笔记:
--------------------------------------------------------------------------------------------------------------
11,java.util.Iterator接口下方法之hasNext():boolean hasNext(),判断当前游标位置的后面是否还有元素,有则返回true,否则返回false;
12,Iterator接口下方法之next:Object next():返回当前游标右边的元素,然后游标右移一个位置;
13,Iterator接口下方法之remove:删除最近返回的元素,在调用remove之前,必须先调用一次next,而且在调用next后只能调用一次remove;不推荐使用remove;
17,用迭代器输出元素的两种写法比较:法一:
Iterator it = al.iterator(); //此方式返回的是Iterator接口的实现类;
while(it.hasNext())
{
System.out.println(it.next());
}
法二:
for(Iterator it = al.iterator(); it.hasNext();)
{
System.out.println(it.next());
}
虽然方法一和方法二都返回了Iterator的实现类,但方法二的返回值只是for语句的局部变量,循环结束后,内存就收回了,而方法一的返回语句在while循环外面,循环结束后,Iterator接口还在占用内存,而且是内存垃圾,从内存管理的角度来看,推荐使用方法二;
18,List集合特有的迭代器、Iterator的子接口:ListIterator:在迭代时,不能通过集合的方法对元素进行操作,否则会发生并发修改异常ConcurrentModificationException,所以在迭代时,只能用迭代器的方法对元素进行操作,而Iterator的方法只有hasNext、next、remove三个方法,无法满足需求,于是就有了Iterator的子接口ListIterator,该接口只能通过List集合的listIterator方法获取,该接口有add、set、remove、previous(返回游标左边的元素)、hasPrevious(判断游标的左边是否有元素)等; |