遍历(也称迭代)容器的4种常用方式

来源:互联网 发布:ps如何把图片矩阵排列 编辑:程序博客网 时间:2024/06/06 05:01

1.将容器转换为数组

Collection接口定义了toArray方法将容器对象转换为数组,然后可以利用循环依次取出数组中的元素,方法代码片段:


Object[] elements = c.toArray()         // c是重写toArray方法的容器实现类的对象

for(int i=0;i<elements.length;i++){

         Object o = elements[i];


}


2.使用迭代器接口Iterator

迭代器是一种允许对容器中元素进行遍历并有选择地删除元素对象,并不是一种容器。迭代器以Iterator接口,一般通过

Collection接口定义的iterator方法得到。Iterator3个方法如下。



boolean hasNext() 若仍有未被迭代的元素,返回true

Object next() 得到下一个未被迭代的元素

void remove() 删除迭代器当前指向的元素



(另加说明一下:    Iterator 的hasNext方法和next方法,

      这两个方法都有指向的移动,不同的是,一个返回boolean,一个返回对象:
      hasNext():判断当前元素是否存在,并没有指向的移动
      next():返回当前元素, 并指向下一个元素)
方法代码片段:
Iterator it = c.iterator();     //c是重写iterator方法的容器实现类的对象
while(it.hasNext()){            // 判断是否有元素未被迭代
Object o = it.next();          //得到下一个未被迭代的元素
........................ //对o进行操作
}


3.使用size和get方法
先获取容器内所有元素的个数,然后依次取出每个位置上的元素并访问。

方法代码片段:
for(int i=0;i<c.size();i++){   //c是重写size方法的容器实现类的对象

Object o = c.get(i);             //并且c支持按位置取出元素的get方法

......................///对o进行操作

}

4.使用迭代型for语句循环

再说第4种方法之前我先声明一下,前3种方法都有局限性,比如某些容器就不支持3中的get方法,然而第四种方法,

绝大部分容器都支持这种方式的遍历,因而无须事先知道容器对象所对应的类重写Collection接口的哪些方法,并且无需额外的编写代码以控制循环的结束。

方法代码片段:
for(Object o :容器对象){
循环体//对元素O进行操作
}

有一点需要注意一下,由于Map未继承Collection接口,因此Map接口的实现类的对象不支持迭代型for循环,对于映射型容器,我们可以先将映射转换为集合,然后再对后者使用迭代型for循环从而实现想要的效果。




感谢大家的阅读。



转载于教材



2 0
原创粉丝点击