集合的遍歷

集合的遍歷與迭代器

對於數組的遍歷,我們一般用的是for循環;而集合的遍歷通常有兩種遍歷方式,除了可以用高級for循環之外,還有它們自己獨特的遍歷方式:器迭代迭代!

迭代器是Collection集合的一種特殊的遍歷方式,它旗下的所有子類都可以用迭代器進行遍歷;
而Map集合沒有迭代器,但是它有方法可以獲取到一個鍵或值的Set集合或是一個鍵值對的Set集合,然後通過Set集合的迭代器進行迭代。

高級for循環的格式:
for(數據類型 xx:集合對象){輸出xx}

迭代器迭代:
首先要通過Collection對象調用iterator方法,獲取到一個迭代器對象Iterator;然後調用迭代器對象中的方法來對集合進行迭代。

這裏寫圖片描述

//示例
import java.util.*;
class demo01
{
    public static void main(String[] args)
    {
        ArrayList<String> al = new ArrayList<String>();
        al.add(“java01”);
        al.add(“java02”);
        al.add(“java03”);
    //高級for循環的遍歷
    for(String s:a1)
    {
        System.out.println(s);
    }
    //迭代器迭代
    Iterator it = al.iterator();//獲取一個迭代器
    //通過hasNext函數判斷集合中是否還存在元素
    while(it.hasNext())
        {
            System.out.println(it.next());//next方法取出元素
        }
    }   
}

List集合稍有不同,List集合中不僅支持Iterator迭代器,它還有自己獨特的迭代器,就是ListIterator,它比Iterator迭代器功能更強大,它支持在迭代的過程中對迭代元素進行修改!

//示例:
import java.util.*;
class demo02
{
    public static void main(String[] args) 
    {
        ArrayList arr = new ArrayList();
        arr.add("java1");//添加元素
        arr.add("java2");
        arr.add("java3");
        arr.add("java4");
        sop(arr);//直接打印元素

        for (ListIterator l = arr.listIterator();l.hasNext() ; )
        {
            Object obj = l.next();
            if(obj.equals("java4"))
                l.add("java5");//在遍歷過程中加元素
            if(obj.equals("java2"))
                l.set("java02");//改元素
            if(obj.equals("java3"))
                l.remove();//刪除元素
        }
        sop(arr);

    }
//打印
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

Map集合的遍歷:

keyset方法
獲取Map集合裏面的鍵集合 存在一個set集合裏面(返回一個set)
然後用iterator迭代器一個一個取出  然後用get方法就可以打印出鍵值 

entryset方法
獲取的是一個<k,v>鍵值對 然後存在set集合裏面
存在形式是這樣子的 Set<Map.Entry<鍵類,鍵值類>>
取出的方法是<Map.Entry>.getKey <Map.Entry>.getValue
//示例
class demo01 
{
    public static void main(String[] args) 
    {
        //創建了一個HashMap對象
        HashMap<String,String> ha = new HashMap<String,String>();
        ha.put("brm","beijing");//往裏面添加元素
        ha.put("arm","shanghai");
        ha.put("crm","guangzhou");
        ha.put("zrm","shenzhen");


    /*  //用了keySet方法進行遍歷集合
        Set<String> se = ha.keySet();
        Iterator<String> it = se.iterator();
        while(it.hasNext())
        {
            String s = it.next();
            String value = ha.get(s);
            sop(s+"--"+value);
        }
    */
        //用了entrySet方法進行遍歷集合
    Set<Map.Entry< String,String>> sa = ha.entrySet();
    Iterator<Map.Entry< String,String>> it = sa.iterator();
        while(it.hasNext())
        {
            Map.Entry< String,String> s = it.next();
            String key = s.getKey(); 
            String value = s.getValue();
            sop(key+"--"+value);//輸出鍵和值
        }

    }
    //打印
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章