服务器之家

服务器之家 > 正文

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

时间:2020-08-05 11:38     来源/作者:JAVA之家

详解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

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
返回顶部