HashMap
HashMap是对key进行散列。
Map跟Collection没有任何关系,所以没有add()方法。放置元素是通过V put(K key,V value)方法,获取元素通过V get(Object key)
代码
import java.util.*;
public class HashMapTest {
public static void main(String[] args) {
// 实例化HashMap
Map hm = new HashMap();
// 放入元素
hm.put("one", "zhangsan");
hm.put("two", "lisi");
hm.put("three", "wangwu");
// 通过键获得值,再打印元素
System.out.println(hm.get("one"));// 打印对应键one的值。
System.out.println(hm.get("two"));
System.out.println(hm.get("three"));
}
}
输出:
zhangsan
lisi
wangwu
keySet()、values()、entrySet()
1. 可以直接通过keySet()来返回一个在Map中键的一个视图。返回类型是Set。
2. 通过values()返回一个在Map中值的一个视图。返回类型是Collection。
3. 可以通过entrySet()返回一个在Map中键-值的一个视图。返回类型是Set。但是entrySet()所返回的Set当中每一个元素都是Map.Entry的类型。Entry是Map当中定义的一个静态的接口,为了显示它与Map的亲切关系,它们都是一起出现。
代码
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 迭代器只与Collections有关,与Map接口无关。
*
* @author liujun
*
*/
public class HashMapTest {
public static void main(String[] args) {
Map<String, String> hm = new HashMap<String, String>();
hm.put("one", "x");
hm.put("two", "y");
hm.put("three", "z");
// 通过键获得值
System.out.println(hm.get("one"));
// 获得键集
// Set<Object> java.util.HashMap.keySet()
Set<String> keys = hm.keySet();
// 获得值集
// Collection<Object> java.util.HashMap.values()
Collection<String> values = hm.values();
// 获得键-值集
// Set<Entry<Object, Object>> java.util.HashMap.entrySet()
// entrySet所返回的Set中,每一个元素都是一个Map.Entry的类型,Entry是Map当中定义的一个静态的接口。
// 主要是一个键值对,Map.Entry接口当中,提供了一个获取键和值的方法,getKey()和getValue()。
Set<Map.Entry<String, String>> entry = hm.entrySet();
// 使用迭代器打印键
System.out.println("keys:");
printElements(keys);
System.out.println();
// 使用迭代器打印值
System.out.println("values:");
printElements(values);
System.out.println();
// 直接打印entry键-值
System.out.println("keys-values:");
// 有的时候可能需要获取entry里面的键或者值进行处理。
// 下面的代码主要是演示如何获取键和值
Iterator<?> it = entry.iterator();
while (it.hasNext()) {
Map.Entry<?, ?> me = (Map.Entry<?, ?>) it.next();
// Entry<?, ?> me = (Entry<?, ?>) it.next();
System.out.println(me.getKey() + ":" + me.getValue());
}
}
private static void printElements(Collection c) {
Iterator it = c.iterator();
while(it.hasNext()) {
System.out.print(it.next() + ", ");
}
}
}
运行结果:
x
keys:
two, one, three,
values:
y, x, z,
keys-values:
two:y
one:x
three:z