4.4. 迭代器与增强for循环

一. 迭代器的执行原理

image.png|500

二. 迭代器是通用的

package com.company.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class CollectionText1 {
    public static void main(String[] args) {

        //ArrayList集合:有序可重复
        Collection c1 = new ArrayList();
        c1.add(1);
        c1.add(2);
        c1.add(3);
        c1.add(4);
        c1.add(1);
        c1.add(2);
        
        //迭代集合
        Iterator it1 = c1.iterator();
        while (it1.hasNext()){
        //存进去什么类型,取出来还是什么类型
            System.out.println(it1.next());//输出的时候会转换成字符串,因为这里的println会调用toString()方法
        }

        System.out.println();

        //HashSet集合:无序不可重复
        Collection c2 = new HashSet();
        //无序:存进去的取出的顺序不一定相同。
        //不可重复:储存1后,不可再储存1.
        c2.add(1);
        c2.add(2);
        c2.add(3);
        c2.add(4);
        c2.add(1);
        c2.add(2);

        Iterator it2 = c2.iterator();
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}

运行结果:

image.png|144

三. foreach(增强for循环)

JDK5.0之后推出了一个新特性:叫做增强for循环,或者叫做foreach

1. 普通遍历数组方法(普通for循环)

for(int i = 0 ; i < arr.length ; i++){
    System.out.println(arr[i]);
}

2. 增强for(foreach)方法

语法:for(元素类型 变量名:数组或集合) {System.out.println(变量名) }

foreach有一个缺点:没有下标

在需要使用下标的循环中,不建议使用增强for循环。

for(int data : arr){
    //data就是数组中的元素(数组中的每一个元素)
    System.out.println(data);
}

3. 集合使用foreach方法

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class forEachText {
    public static void main(String[] args) {
        List<String> l = new ArrayList<>();
        l.add("hello");
        l.add("world!");
        l.add("kitty");

        //用迭代器方式遍历
        Iterator<String> it = l.iterator();
        while (it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }

        //使用下标方式
        for ( int i = 0 ;i < l.size(); i++){
            System.out.println(l.get(i));
        }

        //使用foreach
        for (String s : l){ //因为泛型使用的是String类型,所以是String s
            System.out.println(s);
        }
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇