java.util 中的集合类包含 Java 中某些最常用的类。
最常用的集合类是 List 和 Map。
List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。
MAP中的接口
Map 接口定义了四种类型的方法,每个 Map 都包含这些方法。
覆盖的方法:
我们将这 Object 的这两个方法覆盖,以正确比较 Map 对象的等价性。
equals(Object o) 比较指定对象与此 Map 的等价性
hashCode() 返回此 Map 的哈希
Map 更新方法: 可以更改 Map 内容。
clear() 从 Map 中删除所有映射
remove(Object key) 从 Map 中删除键和关联的值
put(Object key, Object value) 将指定值与指定键相关联 ,想修改键对应的值,直接用这个方法将原来的键值覆盖掉即可。
putAll(Map t) 将指定 Map 中的所有映射复制到此 map
查看 Map 迭代 Map 中的元素不存在直接了当的方法。
如果要查询某个 Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该 Map 的“视图”。
有三种可能的视图
所有键值对 — 参见 entrySet()
所有键 — 参见 keySet()
所有值 — 参见 values()
前两个视图均返回 Set 对象,第三个视图返回 Collection 对象。
就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,您必须获得一个 Iterator 对象。
因此,要迭代 Map 的元素,必须进行比较烦琐的编码
Iterator keyValuePairs = aMap.entrySet().iterator();
Iterator keys = aMap.keySet().iterator();
Iterator values = aMap.values().iterator();
entrySet() 返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素
keySet() 返回 Map 中所包含键的 Set 视图。 删除 Set 中的元素还将删除 Map 中相应的映射(键和值)
values() 返回 map 中所包含值的 Collection 视图。 删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)
Map 访问和测试方法: 这些方法检索有关 Map 内容的信息但不更改 Map 内容。
get(Object key) 返回与指定键关联的值
containsKey(Object key) 如果 Map 包含指定键的映射,则返回 true
containsValue(Object value) 如果此 Map 将一个或多个键映射到指定值,则返回 true
isEmpty() 如果 Map 不包含键-值映射,则返回 true
size() 返回 Map 中的键-值映射的数目
Code:
package maps;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class TestMaps {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("Chinese", "good");
map.put("Math", "Excellent");
map.put("English", "Liquit");
System.out.println(map.size());
for (Object o: map.keySet()){
System.out.println(map.get(o).toString());
}
Iterator i = map.entrySet().iterator();
while(i.hasNext()){
Map.Entry entry = (Map.Entry) i.next();
System.out.println(entry.getKey().toString());
System.out.println(entry.getValue().toString());
}
Iterator j = map.keySet().iterator();
while(j.hasNext()){
System.out.println(j.next().toString());
}
Iterator k = map.values().iterator();
while(k.hasNext()){
System.out.println(k.next().toString());
}
System.out.println("Contains Key Chinese: "+map.containsKey("Chinese"));
map.remove("Chinese");
System.out.println("Contains Key Chinese: "+map.containsKey("Chinese"));
System.out.println("Get value of Math:"+map.get("Math"));
map.put("Math", "Good");
System.out.println("Get value of Math:"+map.get("Math"));
}
}