详解Java中list,set,map的遍历与增强for循环

时间:2021-12-11 14:23:30

详解Javalist,set,map遍历与增强for循环

Java集合类可分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。

关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。

集合概念:

1.作用:用于存放对象
2.相当于一个容器,里面包含着一组对象,其中的每个对象作为集合的一个元素出现
3.java的容器有集合类和数组,不同之处是

区别及其常用实现类

List接口:

列表有序 元素可重复

实现类:ArrayList:动态数组列表

LinkedList:双向链表

Set接口:

集无序,元素不可重复

实现类:HashSet:散列集

TreeSet:树集 内部排序

Map接口:

以键值对的方式存储数据 数据-键不允许重复

实现类:HashSet:散列集

TreeSet:树集 内部排序

JDK1.0出现的集合类都是线程安全的,但效率低

JDK1.2出现的集合类都不是线程安全的,但效率高

代码示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
 
public class ListAndSet{
 
  public static void main(String[] args) {
    setTest();
    listTest();
  }
  // 遍历Set集合
  private static void setTest() {
    Set<string> set = new HashSet<string>();
    set.add("A");
    set.add("B");
    set.add("C"); 
    set.add("D");
    set.add("E");
 
    //set集合遍历方法1:使用iterator
    Iterator<string> it = set.iterator();
    while (it.hasNext()) {
      String value = it.next();
      System.out.println(value);
    }
 
    //set集合遍历方法2:使用增强for循环。
    for(String s: set){
      System.out.println(s);
    }
  }
 
  // 遍历list集合
  private static void listTest() {
    List<string> list = new ArrayList<string>();
    list.add("111");
    list.add("222");
    list.add("333");
    list.add("444");
    list.add("555");
 
    // 遍历方式1:使用iterator
    Iterator<string> it = list.iterator();
    while (it.hasNext()) {
      String value = it.next();
      System.out.println(value);
    }
 
    // 遍历方法2:使用传统for循环进行遍历。
    for (int i = 0, size = list.size(); i < size; i++) {
      String value = list.get(i);
      System.out.println(value);
    }
 
    // 遍历方法3:使用增强for循环进行遍历。
    for (String value : list) {
      System.out.println(value);
    }
  }
}
 
//关于Map类型集合的遍历,keySet()与entrySet()方法
//增强For循环
public class Map{
 
  public static void main(String[] args) {
    // 创建一个HashMap对象,并加入了一些键值对。
    Map<string, string=""> maps = new HashMap<string, string="">();
    maps.put("111", "111");
    maps.put("222", "222");
    maps.put("333", "333");
    maps.put("444", "444");
    maps.put("555", "555");
 
    // 传统的遍历map集合的方法1; keySet()
    //traditionalMethod1(maps);
    // 传统的遍历map集合的方法2; entrySet()
    //traditionalMethod2(maps);
    // 使用增强For循环来遍历map集合方法1; keySet()
    //strongForMethod1(maps);
    // 使用增强For循环来遍历map集合方法2; entrySet()
    strongForMethod2(maps);
  }
 
  private static void strongForMethod2(Map<string, string=""> maps) {
    Set<entry<string, string="">> set = maps.entrySet();
    for (Entry<string, string=""> entry : set) {
      String key = entry.getKey();
      String value = entry.getValue();
      System.out.println(key + " : " + value);
    }
  }
 
  private static void strongForMethod1(Map<string, string=""> maps) {
    Set<string> set = maps.keySet();
    for (String s : set) {
      String key = s;
      String value = maps.get(s);
      System.out.println(key + " : " + value);
    }
  }
 
  // 使用entrySet()方法,获取maps集合中的每一个键值对,
  private static void traditionalMethod2(Map<string, string=""> maps) {
    Set<map.entry<string, string="">> sets = maps.entrySet();
    // 取得迭代器遍历出对应的值。
    Iterator<entry<string, string="">> it = sets.iterator();
    while (it.hasNext()) {
      Map.Entry<string, string=""> entry = (Entry<string, string="">) it.next();
      String key = entry.getKey();
      String value = entry.getValue();
      System.out.println(key + " : " + value);
    }
  }
 
  // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。
  private static void traditionalMethod1(Map<string, string=""> maps) {
    Set<string> sets = maps.keySet();
    // 取得迭代器遍历出对应的值。
    Iterator<string> it = sets.iterator();
    while (it.hasNext()) {
      String key = it.next();
      String value = maps.get(key);
      System.out.println(key + " : " + value);
    }
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://www.2cto.com/kf/201702/596383.html