Java 实例 - 集合遍历


以下实例演示了如何遍历从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合:

List与Set类型集合的遍历

  1. /*
  2. author by shouce.ren
  3. Main.java
  4. */
  5.  
  6. import java.util.ArrayList;
  7. import java.util.HashSet;
  8. import java.util.Iterator;
  9. import java.util.List;
  10. import java.util.Set;
  11.  
  12. public class Main {
  13.  
  14. public static void main(String[] args) {
  15. // List集合的遍历
  16. listTest();
  17. // Set集合的遍历
  18. setTest();
  19. }
  20.  
  21. private static void setTest() {
  22. Set<String> set = new HashSet<String>();
  23. set.add("JAVA");
  24. set.add("C");
  25. set.add("C++");
  26. // 重复数据添加失败
  27. set.add("JAVA");
  28. set.add("JAVASCRIPT");
  29.  
  30. // 使用iterator遍历set集合
  31. Iterator<String> it = set.iterator();
  32. while (it.hasNext()) {
  33. String value = it.next();
  34. System.out.println(value);
  35. }
  36. // 使用增强for循环遍历set集合
  37. for(String s: set){
  38. System.out.println(s);
  39. }
  40. }
  41.  
  42. // 遍历list集合
  43. private static void listTest() {
  44. List<String> list = new ArrayList<String>();
  45. list.add("菜");
  46. list.add("鸟");
  47. list.add("教");
  48. list.add("程");
  49. list.add("www.shouce.ren");
  50.  
  51. // 使用iterator遍历
  52. Iterator<String> it = list.iterator();
  53. while (it.hasNext()) {
  54. String value = it.next();
  55. System.out.println(value);
  56. }
  57.  
  58. // 使用传统for循环进行遍历
  59. for (int i = 0, size = list.size(); i < size; i++) {
  60. String value = list.get(i);
  61. System.out.println(value);
  62. }
  63.  
  64. // 使用增强for循环进行遍历
  65. for (String value : list) {
  66. System.out.println(value);
  67. }
  68. }
  69. }

以上代码运行输出结果为:

  1. www.shouce.ren
  2. www.shouce.ren
  3. www.shouce.ren
  4. JAVA
  5. JAVASCRIPT
  6. C++
  7. C
  8. JAVA
  9. JAVASCRIPT
  10. C++
  11. C

关于Map类型集合的遍历

以下实例我们使用了 HashMap 的 keySet()与entrySet()方法来遍历集合:

  1. /*
  2. author by shouce.ren
  3. Main.java
  4. */
  5.  
  6. import java.util.Map;
  7. import java.util.HashMap;
  8. import java.util.HashSet;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import java.util.Set;
  12. import java.util.Map.Entry;
  13.  
  14. //增强For循环
  15. public class Main {
  16.  
  17. public static void main(String[] args) {
  18. // 创建一个HashMap对象,并加入了一些键值对。
  19. Map<String, String> maps = new HashMap<String, String>();
  20. maps.put("1", "PHP");
  21. maps.put("2", "Java");
  22. maps.put("3", "C");
  23. maps.put("4", "C++");
  24. maps.put("5", "HTML");
  25. // 传统的遍历map集合的方法1; keySet()
  26. //traditionalMethod1(maps);
  27. // 传统的遍历map集合的方法2; entrySet()
  28. //traditionalMethod2(maps);
  29. // 使用增强For循环来遍历map集合方法1; keySet()
  30. //strongForMethod1(maps);
  31. // 使用增强For循环来遍历map集合方法2; entrySet()
  32. strongForMethod2(maps);
  33. }
  34.  
  35. private static void strongForMethod2(Map<String, String> maps) {
  36. Set<Entry<String, String>> set = maps.entrySet();
  37. for (Entry<String, String> entry : set) {
  38. String key = entry.getKey();
  39. String value = entry.getValue();
  40. System.out.println(key + " : " + value);
  41. }
  42. }
  43.  
  44. private static void strongForMethod1(Map<String, String> maps) {
  45. Set<String> set = maps.keySet();
  46. for (String s : set) {
  47. String key = s;
  48. String value = maps.get(s);
  49. System.out.println(key + " : " + value);
  50. }
  51. }
  52.  
  53. // 使用entrySet()方法,获取maps集合中的每一个键值对,
  54. private static void traditionalMethod2(Map<String, String> maps) {
  55. Set<Map.Entry<String, String>> sets = maps.entrySet();
  56. // 取得迭代器遍历出对应的值。
  57. Iterator<Entry<String, String>> it = sets.iterator();
  58. while (it.hasNext()) {
  59. Map.Entry<String, String> entry = (Entry<String, String>) it.next();
  60. String key = entry.getKey();
  61. String value = entry.getValue();
  62. System.out.println(key + " : " + value);
  63. }
  64. }
  65.  
  66. // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。
  67. private static void traditionalMethod1(Map<String, String> maps) {
  68. Set<String> sets = maps.keySet();
  69. // 取得迭代器遍历出对应的值
  70. Iterator<String> it = sets.iterator();
  71. while (it.hasNext()) {
  72. String key = it.next();
  73. String value = maps.get(key);
  74. System.out.println(key + " : " + value);
  75. }
  76. }
  77. }

以上代码运行输出结果为:

  1. 1 : PHP
  2. 2 : Java
  3. 3 : C
  4. 4 : C++
  5. 5 : HTML