(1)三种collection views:key集合,value集合,key-value
(2)顺序:即迭代器(interators)返回map元素的顺序,像TreeMap就实现了,但是HashMap就没有
(3)Map的实现类必须提供两种构造方式:
1.无参数的构造函数,用以构建一个空map
2.含唯一Map参数的构造函数,构建一个含有相同键值对的map
用以复制任何一个map
虽然接口不能提供构造器,不能强行规定实现类必需包含这两个构造函数,但是所有的实现类都包含了
(4)可以自由的调用Object类中的方法,比如equals和hashCode
注意:
(1)key不能重复,一个key最多对应一个value
(2)key的类型需要注意,不允许map自身作为key类型
注意equals和hashCode的方法定义会出问题,重写需要同步
(2)顺序:即迭代器(interators)返回map元素的顺序,像TreeMap就实现了,但是HashMap就没有
(3)Map的实现类必须提供两种构造方式:
1.无参数的构造函数,用以构建一个空map
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR;
threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
table = new Entry[DEFAULT_INITIAL_CAPACITY];
init();
}
2.含唯一Map参数的构造函数,构建一个含有相同键值对的map
public HashMap(Map<? extends K, ? extends V> m) {
this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) + 1,
DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR);
putAllForCreate(m);
}
用以复制任何一个map
虽然接口不能提供构造器,不能强行规定实现类必需包含这两个构造函数,但是所有的实现类都包含了
(4)可以自由的调用Object类中的方法,比如equals和hashCode
注意:
(1)key不能重复,一个key最多对应一个value
(2)key的类型需要注意,不允许map自身作为key类型
注意equals和hashCode的方法定义会出问题,重写需要同步