三种遍历循环、Iterator迭代器 、ListIterator迭代器

for循环、for each、迭代器都可以进行数组与集合的遍历。

三种循环的区别与关联:《关于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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值