17-1,Map集合特点&常用方法
1,Map是一个接口,一次添加一对元素,Collection是一次添加一个元素。Map也成为双列集合,Collection集合称为单列集合。
2,Map
且一个映射当中不能包含重复的键,每个键最多只能映射到一个值上。也就是说,Map是一个键值对,Map集合中必须保证键的唯一性。
3,Map常用方法。
(1)添加:
value put(key,value):返回前一个与key关联的值,如果没有,则返回null。
比如,先保存了一对
(2)删除:
void clear():清空
value remove(key):根据指定的key删除这个键值对,返回这个key对应的value。
(3)判断:
boolean containsKey(key):判断是否包含指定的key。
boolean containsValue(value):判断是否包含指定的value。
boolean isEmpty():判断是否为空。
(4)获取:
value get(key):通过key取出对应的value,如果不包含这个key,则返回null,可以通过返回null,来判断是否包含指定键。
int size():获取键值对的个数。
17-2,常用方法演示
public class Demo{
public static void main(String[] args) {
Map
map = new HashMap
(); method(map); } public static void method(Map
map) { System.out.println(map.put(8,"wangcai"));//null System.out.println(map.put(8,"xiaoqiang"));//wangcai System.out.println(map);//{8-xiaoqiang} //删除 System.out.println(map.remove(2));//根据key,删除
键值对,返回value //判断 System.out.println(map.containsKey(8)); //获取 System.out.println(map.get(8)); } }
17-3,重点方法keySet()演示图解
1,Set
2,演示:
public class Demo {
public static void main(String[] args) {
Map
map = new HashMap
(); method(map); } public static void method(Map
map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); /* 取出map中的所有元素。 原理:通过keySet()方法获取Map中所有的键所在的Set集合,再通过Set的迭代器获取到每一个键, 再对每一个键通过get(key)方法获取其对应的值即可。 */ Set
keySet = map.keySet(); Iterator
it = keySet.iterator(); while(it.hasNext()) { Integer key = it.next(); String value = map.get(key); System.out.println(key + "..." + value); } } }
3,图解:
17-4,重点方法entrySet演示图解
1,public Set
2,第二种取出方式entrySet(),
public class Demo {
public static void main(String[] args) {
Map
map = new HashMap
(); method(map); } public static void method(Map
map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); /* 取出map中的所有元素。 原理:通过Map转换成set就可以迭代,这里使用另一种方法:entrySet()。 该方法将键和值的映射关系作为对象存储到了set集合中,而这个映射关系的类型就是Map.Entry类型。 */ Set
> entrySet = map.entrySet(); Iterator
> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry
me = it.next(); Integer key = me.getKey(); String value = me.getValue(); System.out.println(key + "..." + value); } } }
3,图解:
4,Map.Entry的解释
Map是个接口,Map.Entry是接口中的接口,即,内部接口,表现如下:
interface Map {
public static interface Entry {
void get();
}
}
class Demo implements Map.Entry {
public void get() {...}
}
这与内部类差不多是一个原理。
17-5,方法values()的演示
1,Collection
返回此映射中包含的值得Collection视图。
返回Collection而不是Set的原因是:键是唯一的,而值不是唯一的,所以不能用Set存。
2,演示
public class Demo {
public static void main(String[] args) {
Map
map = new HashMap
(); method(map); } public static void method(Map
map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); Collection
values = map.values(); Iterator
it = values.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
17-6,Map常用子类对象
1,Map常用子类:
(1)Hashtable:内部结构是哈希表,是同步的,不允许null作为键、值。
(2)HashMap:内部结构是哈希表,不是同步的,允许null作为键、值。
(3)TreeMap:内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。
HashSet其实