Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。
Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator<Type>接口来自定义排序方式。
List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。
Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。
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
7 public class ListAndSetTest {
8
9 public static void main(String[] args) {
10 // List集合的遍历
11 listTest();
12 // Set集合的遍历
13 setTest();
14 }
15
16 private static void setTest() {
17 Set<String> set = new HashSet<String>();
18 set.add("JAVA");
19 set.add("C");
20 set.add("C++");
21 // 重复的加不进去。
22 set.add("JAVA");
23 set.add("JAVASCRIPT");
24
25 //set集合遍历方法1,使用iterator
26 Iterator<String> it = set.iterator();
27 while (it.hasNext()) {
28 String value = it.next();
29 System.out.println(value);
30 }
31
32 //set集合遍历方法2,使用增强for循环。
33 for(String s: set){
34 System.out.println(s);
35 }
36 }
37
38 // 遍历list集合
39 private static void listTest() {
40 List<String> list = new ArrayList<String>();
41 list.add("java111");
42 list.add("java222");
43 list.add("java333");
44 list.add("java444");
45 list.add("java555");
46
47 // 遍历方式1 ,使用iterator
48 Iterator<String> it = list.iterator();
49 while (it.hasNext()) {
50 String value = it.next();
51 System.out.println(value);
52 }
53
54 // 遍历方法2 , 使用传统for循环进行遍历。
55 for (int i = 0, size = list.size(); i < size; i++) {
56 String value = list.get(i);
57 System.out.println(value);
58 }
59
60 // 遍历方法3 , 使用增强for循环进行遍历。
61 for (String value : list) {
62 System.out.println(value);
63 }
64 }
65 }
66
67 关于Map类型集合的遍历,keySet()与entrySet()方法:
68 [java] view plaincopy
69 //增强For循环
70 public class MapTest {
71
72 public static void main(String[] args) {
73 // 创建一个HashMap对象,并加入了一些键值对。
74 Map<String, String> maps = new HashMap<String, String>();
75 maps.put("111", "java111");
76 maps.put("222", "java222");
77 maps.put("333", "java333");
78 maps.put("444", "java444");
79 maps.put("555", "java555");
80
81 // 传统的遍历map集合的方法1; keySet()
82 //traditionalMethod1(maps);
83 // 传统的遍历map集合的方法2; entrySet()
84 //traditionalMethod2(maps);
85 // 使用增强For循环来遍历map集合方法1; keySet()
86 //strongForMethod1(maps);
87 // 使用增强For循环来遍历map集合方法2; entrySet()
88 strongForMethod2(maps);
89 }
90
91 private static void strongForMethod2(Map<String, String> maps) {
92 Set<Entry<String, String>> set = maps.entrySet();
93 for (Entry<String, String> entry : set) {
94 String key = entry.getKey();
95 String value = entry.getValue();
96 System.out.println(key + " : " + value);
97 }
98 }
99
100 private static void strongForMethod1(Map<String, String> maps) {
101 Set<String> set = maps.keySet();
102 for (String s : set) {
103 String key = s;
104 String value = maps.get(s);
105 System.out.println(key + " : " + value);
106 }
107 }
108
109 // 使用entrySet()方法,获取maps集合中的每一个键值对,
110 private static void traditionalMethod2(Map<String, String> maps) {
111 Set<Map.Entry<String, String>> sets = maps.entrySet();
112 // 取得迭代器遍历出对应的值。
113 Iterator<Entry<String, String>> it = sets.iterator();
114 while (it.hasNext()) {
115 Map.Entry<String, String> entry = (Entry<String, String>) it.next();
116 String key = entry.getKey();
117 String value = entry.getValue();
118 System.out.println(key + " : " + value);
119 }
120 }
121
122 // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。
123 private static void traditionalMethod1(Map<String, String> maps) {
124 Set<String> sets = maps.keySet();
125 // 取得迭代器遍历出对应的值。
126 Iterator<String> it = sets.iterator();
127 while (it.hasNext()) {
128 String key = it.next();
129 String value = maps.get(key);
130 System.out.println(key + " : " + value);
131 }
132 }
133 }