Java类库用映射提供了两个通用的实现:HashMap 和 TreeMap。这两个类都实现了Map接口。
java.util.Map<K, V> 1.2
V get(Object key)
- 获取与键关联的值;返回与键关联的对象,或者如果映射中没有这个对象,则返回null。
default V getOrdefault(Object key, V defaultValue)
- 获取与键关联的值;返回与键关联的对象,或者如果未在映射中没找到这个键,则返回defaultValue。
V put(K key, V value)
- 将关联的一对"键和值"放到映射中。如果之前没有这个键,则返回 null。
- 如果"键"已经存在,新的对象将取代"与这个键关联的旧对象"。这个方法将返回"键关联的旧值"。
- 实现类可以禁止"键或值"为null。
void putAll(Map<? extends K, ? extends V> entries)
- 将给定映射中的"所有映射条目"添加到这个映射中。
boolean containsKey(Object key)
- 如果在映射中已经有这个"键",则返回true。
boolean containsValue(Object value)
- 如果在映射中已经有这个"值",则返回true。
default void forEach(BiConsumer<? super K, ? super V> action) Java 8
- 对这个映射中的所有 "键/值对" 应用这个动作。
//《Java核心技术 卷I》 11版 p396
实战栗子:
for (...) {
if (deque.size() == 0) { // 这两步用的好
if (!map.containsKey(sum)) { // 判断不同方案人数,以第一个出现的方案为准(所以需要判断)
map.put(sum, i); // 求:最小下标值,所以 i 作为value值, map.get(sum)
sum = 0;
break;
}
break;
}
// 求map的最小值 map.get(key),因此必须先得到key的最小值,直接遍历就可,用不着对map排序
int minVal = Integer.MAX_VALUE;
for (Map.Entry<Integer, Integer> e : map.entrySet()) { //没有必要使用 entrySet()
minVal = Math.min(minVal, e.getKey());
}
return map.get(minVal);
int min =Integer.MAX_VALUE;
for (Integer a : hashMap.keySet()) {
min = Math.min(min, a);
}
return hashMap.get(min);