第四天的学习:
Map接口:将键映射到值的对象,一个映射只能拥有一个键,每个键智能映射到一个值;
Map接口与Collection接口的区别:
Map是双列的,Collection是单列的;
Map的键是唯一的,Collection的子体系Set是唯一的;(单列集合底层依赖的是双列集合)
Map集合的数组结构值针对键有效,跟值无关;
Collection集合的数据结构是针对元素有效;
Map的功能方法:
V put(K key,V value); //添加元素
void clear(); //清除所有元素
V remove(Object obj); //根据键值删除对应元素,并返回值
boolean containskey(Object obj); //判断集合是否包含指定键
booolean containsValue(Object obj);//判断集合是否包含指定值
boolean isEmpty();//判断集合是否为空
Set<Map.Entry<K,V>> entrySet(); //获取键值对象集合(Map.Entry是内部类)
V get(Object obj);//根据键获取值
Set<K> keySet();//获取集合中所有键的集合
Collection<V> values();//获取集合中所有值的集合
int size();//返回集合中的键值对的个数
Map集合的遍历(一):
先获取Map集合中所有的键的集合;
再遍历键的集合获取Map集合中对用的值;
最后打印;(迭代器,增强for循环).
Map集合的遍历(二):
先获取Map集合中的键值对象;
分别获取键值对象的键和值;
最后打印.
LinkedHashMap:(跟LinkedHashSet类似)
保证怎么存就怎么取.
HashMap和Hashtable的区别:
Hashtable是JDK1.0版本里出现的,是线程安全的,但是效率低;
HashMap是JDK1.2版本出现的,是线程不安全的,但是效率高.
Hashtable不可以存储null键和null值,但是HashMap可以
Coolections工具类的方法:
...(不说了)
静态类构造方法要定义成私有的比较好.
? extends E 和 ?super E
? extends E:(addAll方法),本来是向集合中存储父类对象,但是实际可以存入子类对象(固定上边界);
?super E:(比较器),本来是想集合中取出父类对象进行操作,但是实际可以取出子类对象进行操作(固定下边界). |
|