Map
- Map 集合没有继承 Collection 接口,提供的是键到值的映射,是存储 键-值 对(key - value)的集合;
- 通过键来标识对象在映射中的存储位置,键不可重复,键本身不能决定存储位置,而是通过一种散列技术处理,产生一个散列码的整数值;
- 散列码常用作偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置;
- 当调用的映射中没有元素存在时,会引发 NoSuchElementException 异常,当对象与映射中的元素不兼容时,会引发 ClassCastException 异常,如果使用映射不允许使用的 null 对象,会引发 NullPointerException 异常,当试图改变一个不允许修改的映射时,会引发 UnsupportedOperationException 异常;
1. 转换为集合(Set,Collection)
- 映射不是类集,但是可以获得类集的视图,可以使用 entrySet() 方法,它返回一个包含了映射中元素的集合(Set),用 keySet() 可以得到键的类集视图,用 values() 可以得到值得类集视图;
类型 |
方法 |
说明 |
Set |
entrySet() |
返回 Map 集合中所有 键-值 对的 Set 集合,Set 集合中元素的数据类型是 Map.Entry |
Set |
keySet() |
返回 Map 中所有 键 对应的 Set 集合 |
Collection |
values() |
返回一个映射中包含的值得类集,映射循环使用 get() 和 put(),put() 将一个指定了键的值加入映射,可以使用键作为参数来调用 get() 方法,返回该值 |
2. 提供的方法
类型 |
方法 |
说明 |
Object |
put(Object key, Object value) |
向 Map 集合中添加 键-值 对,返回 键 以前对应的值,如果没有返回 null |
void |
putAll(Map m) |
将所有来自 m 的输入加入调用映射 |
Object |
get(Object key) |
返回指定键映射的值,如果此映射不包含该键的映射关系返回 null,Object 是值的数据类型 |
void |
clear() |
删除所有 键-值 对 |
int |
size() |
返回映射中 键-值 对的个数 |
int |
hashCode() |
返回调用映射的散列码 |
boolean |
isEmpty() |
如果映射是空的,返回 true |
boolean |
containsKey(Object k) |
如果映射包含了键 k,返回 true |
boolean |
containsValue(Object v) |
如果映射包含了值 v,返回 true |
Object |
remove(Object k) |
删除键为 k 的输入 |
boolean |
equals(Object o) |
如果 o 是映射并包含了相同的输入,返回 true |
import java.util.HashMap;
import java.util.TreeSet;
public class test {
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add(3);
ts.add(4);
TreeSet ts2 = new TreeSet();
ts2.add(3);
ts2.add(4);
System.out.println(ts.equals(ts2));
HashMap hm = new HashMap();
hm.put(3, 3);
hm.put(4, 4);
HashMap hm2 = new HashMap();
hm2.put(3, 3);
hm2.put(4, 4);
System.out.println(hm.equals(hm2));
}
}
3. 实现类