Map<键,值> 概述/特点
Map的值也是无序的和Set()相同 且键不能重复 键重复回把前面的那个同键的值替换掉
A:Map接口概述
查看API可以知道:
将键映射到值的对象
一个映射不能包含重复的键
每个键最多只能映射到一个值
B:Map接口和Collection接口的不同
Map是双列的,Collection是单列的
Map的键唯一,Collection的子体系Set是唯一的
Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
Map集合的功能:
Map是集合 所以只能创建子类对象
Map集合的功能概述
* A:Map集合的功能概述
* a:添加功能
* V put(K key,V value):添加元素。
* 如果键是第一次存储,就直接存储元素,返回null
* 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
* b:删除功能
* void clear():移除所有的键值对元素
* V remove(Object key):根据键删除键值对元素,并把值返回
* c:判断功能
* boolean containsKey(Object key):判断集合是否包含指定的键
* boolean containsValue(Object value):判断集合是否包含指定的值
* boolean isEmpty():判断集合是否为空
* d:获取功能
* Set<Map.Entry<K,V>> entrySet(): 将Map中的所有键_值封装到一个容器中并用Set接收
* V get(Object key):根据键获取值
* Set<K> keySet():获取集合中所有键的集合 用Set接口接收
* Collection<V> values():获取集合中所有值的集合
* e:长度功能
* int size():返回集合中的键值对的个数
Map集合的迭代
通过查看API Map集合没有iterator方法 所以不能迭代
Iterator循环
Set<String> keySet = map.keySet();获取所有键的集合
获取迭代器
判断集合中是否有值
获取每一个键
根据键获取值get()
增强for循环
for(String key : map.keySet()) { //map.keySet()是所有键的集合
System.out.println(key + "=" + map.get(key));
}
Map的第二种迭代
Map.Entry:解释:Entry是Map的内部接口
hashMap要是存储对象要重写equels()和hashCod()方法
toString()方法也重写;
不重写不会去重复(键相同不会去掉)
LinkedHAshMap()特点:怎么存怎么取;
Treemap 根据要求排序(对键的排序)
要不实现对象的类或加一个比较器和昨天学的TerrSet()相同
Char的包装类Character
HashMap嵌套
HashMap与Hashtable区别:
HashMap等于替代掉了hashtable
面试题:
共同点:底层都是哈希算法,都是双列集合
区别:
1,HashMap是线程不安全的,效率高,JDK1.2版本的
Hashtable是线程安全的,效率低,JDK1.0版本
2,hashMap可以存储null键和null值
Hashtable不可以存储
Collections是工具类 方法都是静态的 (当所有方法都是静态的 构造方法私有)
Collections中的常见方法
public static <T> void sort(List<T> list) //对集合排序
public static <T> int binarySearch(List<?> list,T key)//二分查找法
public static <T> T max(Collection<?> coll)//获取最大值
public static void reverse(List<?> list)//翻转集合
public static void shuffle(List<?> list)//随机置换(洗牌)
泛型固定下边界 |
? Super E |
|collections中的Demo2_Gwnric中
泛型固定上边界 |
? extends E |
|
|