赞
踩
三种循环的区别与关联:《关于for循环,for each和迭代器遍历集合或者数组》
for循环:可以拿到数组元素下标,可以对数组进行修改,关心越界,关心强制类型转换。
for each:不能修改元素,使用封装好的类方法。底层用迭代器实现,无法remove。
迭代器:不能修改元素,使用封装好的类方法。可以remove。
以下是ArrayList 的三种遍历循环:
- //Arraylist的三种遍历循环
- ArrayList<String> list = new ArrayList<>();
- list.add("你好哇!");
- list.add("周周哇!");
- System.out.println(list); //正常打印是因为底层利用了AbstractCollection的toString方法。
一、利用 for 循环遍历循环:
- //第一种:利用for循环进行遍历:
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i) + " ");
- }
二、利用 for each 循环遍历循环:
- //第二种:利用for each进行遍历:
- for (String s : list){
- System.out.println(s + " ");
- }
三、利用迭代器遍历循环:继承Collection接口的都实现了迭代器方式。
- Iterator<String> it1 = list.iterator();
- while (it1.hasNext()){
- System.out.println(it1.next() + " ");
- }
- System.out.println("====List迭代器相关打印=====");
- ListIterator<String> it2 = list.listIterator();
- while (it2.hasNext()){
- System.out.println(it2.next() + " ");
- }
Iterator 与 ListIterator 的区别可见该文章:《Iterator和ListIterator之间有什么区别?》
1、Iterator和ListIterator都能实现remove,remove首先需要next迭代出列表中的元素才能进行remove,但ListIterator可以通过set() 实现修改,Iterator只能遍历。
2、ListIterator中的方法更多,例如add。
3、Iterator只能单向遍历,ListIterator可以双向遍历。
其中remove与add方法示例如下:
- //Iterator/ListIterator的remove
- ArrayList<String> list5 = new ArrayList<>();
- list5.add("鹅鹅鹅");
- list5.add("曲项向天歌");
- Iterator<String> it3 = list5.iterator();
- while (it3.hasNext()){ //迭代器删除首先需要使用next方法迭代出集合中的元素,然后才能调用remove方法
- String ret = it3.next();
- if (ret.equals("鹅鹅鹅")){
- it3.remove();
- }else {
- System.out.println(ret + " ");
- }
- }
- System.out.println("======================");
-
- //ListIterator的add(Iterator没有add)
- ArrayList<String> list6 = new ArrayList<>();
- list6.add("123");
- list6.add("木头人");
- ListIterator<String> it4 = list6.listIterator();
- while (it4.hasNext()){
- String ret = it4.next();
- if (ret.equals("123")){
- it4.add("那么就");
- }else{
- System.out.println(ret + " ");
- }
- }
- System.out.println(list6);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。