来源URL:http://baihe747.iteye.com/blog/2115444
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
Java代码 收藏代码
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持
null
;HashTable线程安全,低效,不支持
null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对
List遍历
List list =
new
ArrayList();
list.add(1);
list.add(2);
list.add(4);
list.add(3);
Iterator iterator = list.iterator();
System.out.println(
"------方法一-------"
);
while
(iterator.hasNext()) {
int i = Integer.parseInt(iterator.next().toString());
System.out.println(i);
}
System.out.println(
"------方法二(与方法一实质相同)-------"
);
for
(Iterator iter = list.iterator(); iter.hasNext();) {
int i = Integer.parseInt(iter.next().toString());
System.out.println(i);
}
System.out.println(
"------方法三-------"
);
for
(Object obj : list) {
System.out.println(obj);
}
System.out.println(
"------方法四-------"
);
for
(int i = 0; i < list.size(); i++) {
int k = list.get(i);
System.out.println(k);
}
Set遍历
Set set =
new
HashSet();
set.add(
"123"
);
set.add(
"abc"
);
System.out.println(
"方法一"
);
// 方法一:使用迭代器
for
(Iterator i = set.iterator(); i.hasNext(); ) {
System.out.println(i.next());
}
System.out.println(
"方法二"
);
// 方法二:使用 JDK 5 新增的 foreach 循环,只有数组和实现了 Iterable 接口的类才能这样写。
// 冒号左边是一个局部变量,表示这个 set 中被迭代出来的元素,右边是一个数组或者是实现了 Iterable
// 接口的类。
for
(String str : set) {
System.out.println(str);
}
Map遍历(1)
Map tempMap =
new
HashMap();
tempMap.put(
"a"
, 1);
tempMap.put(
"b"
, 2);
tempMap.put(
"c"
, 3);
// JDK1.4中
// 遍历方法一 hashmap entrySet() 遍历
System.out.println(
"方法一"
);
Iterator it = tempMap.entrySet().iterator();
while
(it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(
"key="
+ key +
" value="
+ value);
}
System.out.println(
""
);
// JDK1.5中,应用新特性For-Each循环
// 遍历方法二
System.out.println(
"方法二"
);
for
(Map.Entry entry : tempMap.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
System.out.println(
"key="
+ key +
" value="
+ value);
}
System.out.println(
""
);
// 遍历方法三 hashmap keySet() 遍历
System.out.println(
"方法三"
);
for
(Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);
// 循环输出key
}
for
(Iterator i = tempMap.values().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);
// 循环输出value
}
for
(Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(
"key="
+ obj +
" value="
+ tempMap.get(obj));
// 循环输出key 和 value
}
System.out.println(
""
);
// 遍历方法四 treemap keySet()遍历
System.out.println(
"方法四"
);
for
(Object o : tempMap.keySet()) {
System.out.println(
"key="
+ o +
" value="
+ tempMap.get(o));
}
Map遍历(2)
public static void main(String[] args) {
Map<String, String> map =
new
HashMap<String, String>();
map.put(
"1"
,
"value1"
);
map.put(
"2"
,
"value2"
);
map.put(
"3"
,
"value3"
);
//第一种:普遍使用,二次取值
System.out.println(
"通过Map.keySet遍历key和value:"
);
for
(String key : map.keySet()) {
System.out.println(
"key= "
+ key +
" and value= "
+ map.get(key));
}
//第二种
System.out.println(
"通过Map.entrySet使用iterator遍历key和value:"
);
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while
(it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println(
"key= "
+ entry.getKey() +
" and value= "
+ entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println(
"通过Map.entrySet遍历key和value"
);
for
(Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(
"key= "
+ entry.getKey() +
" and value= "
+ entry.getValue());
}
//第四种
System.out.println(
"通过Map.values()遍历所有的value,但不能遍历key"
);
for
(String v : map.values()) {
System.out.println(
"value= "
+ v);
}
|