Java集合的Stack、Queue、Map的遍曆

來源:互聯網
上載者:User
在集合操作中,常常離不開對集合的遍曆,對集合遍曆一般來說一個foreach就搞定了,但是,對於Stack、Queue、Map類型的遍曆,還是有一些講究的。 最近看了一些代碼,在便利Map時候,慘不忍睹,還有一些是遍曆錯誤,忽略了隊列、棧與普通Collection的差別導致的,這些代碼就不作為反面教材了。 下面是常用的寫法:  一、Map的遍曆 import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 

/** 
* Map的遍曆,這個遍曆比較特殊,有技巧 

* @author leizhimin 2009-7-22 15:15:34 
*/ 
public class TestMap { 
        public static void main(String[] args) { 
                Map<String, String> map = new HashMap<String, String>(); 
                map.put("1", "a"); 
                map.put("2", "b"); 
                map.put("3", "c"); 

                //最簡潔、最通用的遍曆方式 
                for (Map.Entry<String, String> entry : map.entrySet()) { 
                        System.out.println(entry.getKey() + " = " + entry.getValue()); 
                } 
                //Java5之前的比較簡潔的便利方式1 
                System.out.println("----1----"); 
                for (Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); it.hasNext();) { 
                        Map.Entry<String, String> entry = it.next(); 
                        System.out.println(entry.getKey() + " = " + entry.getValue()); 
                } 
                //Java5之前的比較簡潔的便利方式2 
                System.out.println("----2----"); 
                for (Iterator<String> it = map.keySet().iterator(); it.hasNext();) { 
                        String key = it.next(); 
                        System.out.println(key + " = " + map.get(key)); 
                } 
        } 
} 3 = c 
2 = b 
1 = a 
----1---- 
3 = c 
2 = b 
1 = a 
----2---- 
3 = c 
2 = b 
1 = a 

Process finished with exit code 0

  二、Queue的遍曆 import java.util.Queue; 
import java.util.concurrent.LinkedBlockingQueue; 

/** 
* 隊列的遍曆 

* @author leizhimin 2009-7-22 15:05:14 
*/ 
public class TestQueue { 
        public static void main(String[] args) { 
                Queue<Integer> q = new LinkedBlockingQueue<Integer>(); 
                //初始化隊列 
                for (int i = 0; i < 5; i++) { 
                        q.offer(i); 
                } 
                System.out.println("-------1-----"); 
                //集合方式遍曆,元素不會被移除 
                for (Integer x : q) { 
                        System.out.println(x); 
                } 
                System.out.println("-------2-----"); 
                //隊列方式遍曆,元素逐個被移除 
                while (q.peek() != null) { 
                        System.out.println(q.poll()); 
                } 
        } 
} -------1----- 





-------2----- 




Process finished with exit code 0

  三、Stack的遍曆 import java.util.Stack; 

/** 
* 棧的遍曆 

* @author leizhimin 2009-7-22 14:55:20 
*/ 
public class TestStack { 
        public static void main(String[] args) { 
                Stack<Integer> s = new Stack<Integer>(); 
                for (int i = 0; i < 10; i++) { 
                        s.push(i); 
                } 
                //集合遍曆方式 
                for (Integer x : s) { 
                        System.out.println(x); 
                } 
                System.out.println("------1-----"); 
                //棧彈出遍曆方式 
//                while (s.peek()!=null) {     //不健壯的判斷方式,容易拋異常,正確寫法是下面的 
                while (!s.empty()) { 
                        System.out.println(s.pop()); 
                } 
                System.out.println("------2-----"); 
                //錯誤的遍曆方式 
//                for (Integer x : s) { 
//                        System.out.println(s.pop()); 
//                } 
        } 
} 0 




------1----- 





------2----- 

Process finished with exit code 0

  在遍曆集合時候,優先考慮使用foreach語句來做,這樣代碼更簡潔些。 

本文出自 “熔 岩” 部落格,請務必保留此出處http://lavasoft.blog.51cto.com/62575/181781

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.