Java 实例 - 集合遍历

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

List与Set类型集合的遍历

Main.java 文件

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

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

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

关于Map类型集合的遍历

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

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

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

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