Collection-Map
1
2
3
4
|
Map--|双列集合,一次存一对键值对,必须保证唯一性
--|HashMap:哈希表,不同步,允许空的Key,Value
--|TreeMap:二叉树,线程不同步,可以对Map集合的键?排序
--|Hashtable:哈希表,线程同步效率低下,不允许空的Key,Value
|
Map 集合共性功能
添加 |
V put(K,V) / putAll(Map<K,V> map) |
删除 |
V remove(K) / void clear() |
判断 |
Boolean containsKey / Value() |
获取 |
V get(K) / int size() |
注意:如果对同一个键多次存储会出现值被覆盖的现象
Map 集合取出键值对方法
迭代器取出法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package sourceCode;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class collMap {
public static void main(String[] args) {
Map<Integer,String> se = new HashMap<Integer,String>();
se.put(1, "Now");
se.put(5, "aset");
se.put(6, "kEREd");
// System.out.println(se);
Set<Integer> keySet = se.keySet();
for (Iterator<Integer> iter = keySet.iterator(); iter.hasNext();) {
Integer ssr = (Integer) iter.next();
System.out.println(se.get(ssr));
}
}
}
|
Map.Entry
1
2
3
4
5
6
7
|
Set<Map.Entry<Integer, String>> Solo = se.entrySet();
for (Iterator<Map.Entry<Integer, String>> itera = Solo.iterator(); itera.hasNext();) {
Map.Entry<Integer, String> me = itera.next();
Integer er =me.getKey();
String sun =me.getValue();
System.out.println(er+"::::"+sun);
}
|
这里解释以下Map.Entry 其实,Entry就是Map接口内的一个接口
它随着Map的加载而加载
1
2
3
4
5
6
7
8
|
interface Map{
public static interface Entry {
}
}
class xxx implements Map.Entry{
}
|
Values 方法取出键值对
1
2
3
4
5
|
Collection<String> value = se.values();
for (Iterator<String> uuid = value.iterator(); uuid.hasNext();) {
String dock =uuid.next();
System.out.println(dock);
}
|
三种方法结果如下:
1
2
3
4
5
6
7
8
9
10
11
|
Now
aset
kEREd
~~~~~~~~~~~
1::::Now
5::::aset
6::::kEREd
~~~~~~~~~~~
Now
aset
kEREd
|
关于 Map.Entry 方法
其实Map.Entry可以直接写为Entry 方法,因为我在敲代码的时候偶然发现,不敲 Map. 程序依然可以正常运行
百度得:
1
2
3
|
Entry是Map中的一个静态内部类,用来表示Map中的每个键值对。除非使用了静态导入:import static java.util.Map.*
除了使用静态导入外,还可以直接导入这个类,因为它是public的。即:import java.util.Map.Entry。
导入后也可以在当前空间直接使用Entry。
|