1.定义
public interface Map<K,V> { }
定义map对象时建议指定key和value对应的类型,key和value要求必须时复杂类型,不能采用int之类的简单类型。
map接口中有一个内部接口Entry,每个Entry对象用于封装一对key/value,value允许修改,但是key不允许修改。
interface Entry<K,V> {
K getKey();
V getValue();
V setValue(V value);
}
2.常见方法
Object put(Object key, Object value):用于存储一个键值对,如果出现key值冲突,则后盖前;允许key和value为null,但是key值只能有一个null,value没有null的个数限制。
int size():获取集合中元素Entry的个数
Object remove(Object key):根据key值移除对应的key-value键值对,并且返回删除的value值
Object get(Object key):按照key值获取对应的value值,如果key值不存在则返回null。
boolean containsKey(Object key):判断map中是否存在某个特定的key值
boolean containsValue(Object value):判断map中是否存在某个特定的value值
void clear() :清空当前map中的所有元素
Set keySet():返回所有key所组成的Set集合,然后就可以通过key值获取对应的value值。
Collection values():获取所有value值所构成的Collection集合
Set entrySet():返回map中存储的所有entry对象,一个 entry中保存一个key/value键值对。
forEach和lambda表达式实现map输出。
3.遍历访问
依赖key值进行遍历
Set<String> keys = map.keySet();// 获取map中所有的key所组成的Set集合
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();
Integer value = map.get(key); // 根据key获取key所对应的value值
直接遍历所有的value值
Collection<Integer> values=map.values(); //没有直接提供方法根据value获取对应的 key,因为value值没有唯一性的约束
values.forEach(System.out::println);
获取所有的entry,存储在map中的键值对都是封装为Entry对象,一个key-value对对应一个entry对象。
Set<Entry<String,Integer>> sets=map.entrySet();
for(Entry<String,Integer> tmp:sets){
String key=tmp.getKey(); //获取一个key-value中的key值
Integer value=tmp.getValue(); //获取一个key-value中的value值
}
4.Map的实现类
常见的实现类HashMap、TreeMap、LinkedHashMap、Hashtable等。