- A+
散列表Map:映射(以key-value的方式)
1.容量:散列表中散列数组的大小
2.散列运算:key-->散列值(即散列数组的下标)
map集合又称为查找表,以键值对 KEY - VALUE 形式存储。key可以看成是value的索引。
1.key值唯一,不可重复,value可以重复。
2.根据内部机构的不同,map接口具有不同的实现类。
HashMap( hash表实现的 )
TreeMap(内部为排序二叉树实现的)
3.通常是使用Map时,会使用泛型约束对象类型。通常会约束两个类型,key的类型和value的类型
4.根据key的散列值来计算散列表,元素按照散列表排序(内部排列是无序的)
HashMap常用方法:
1. put (K key,V val):将元素以key-value形式存入map中,若key值相同,则会进行替换
2. get(K key):根据key值返回对用的value值,如不存在则返回null。
3. containsKey(Object key):判断map中是否含有指定的key
4. containsValue(Object value):判断map中是否含有指定的value
注意:原则上获取map中元素时,需要先判断是否含有该元素,防止空指针异常。
例如:
Map map = HashMap();
map.put("姓名",张三");
5.clear():清空集合
6.isEmpty():判断集合是否为空
7.size():获取元素个数。
遍历HashMap:
方式一:获取所有的key,根据key获取对应的value(遍历key)。
keySet() :该方法可以以set形式返回map中所有的key
Map map = new HashMap();
map.put(1,"one");
map.put(2,"two");
Set set = map.keySet(); // set {1,2}
注意:linkedHashMap使用方法与HashMap一致。
方式二:Entry类,以键值对方式进行迭代,所在位置 java.util.Map.Entry
entrySet():该方法返回一个set集合,里面的元素是map中每一组键值对。map以rntry实例来描述每一个键值对。
getKey():获取key值。
getValue():获取value值。
Entry也需要泛型约束,其约束类型应和Map相同。
例如:
Map map = new LinkedHashMap();
map.put("1,2",new Point(1,2));
map.put("2,3",new Point(2,3));
map.put("3,4",new Point(3,4)); // 泛型套泛型
Set
for(Entry entry : entrySet ){
String key = entry.getKey(); // 获取key
Point value = entry.getVlue(); // 获取value
}