一、概述。
1.Map是一种接口,在JAVA集合框架中是一个非常重要的集合。
2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)
3.Map集合中存放的是一个一个的键值对,集合中存放的元素必须保证键的唯一性。
二、常用方法。
1.添加
V |
put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。 |
该方法的作用就是向集合中添加一个键值对,并返回一个值;如果键存在,则返回对应的旧值,并以新值取代之;如果键不存在则返回null。所以该方法也是修改的方法。
void |
putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
该方法功能略,但注意泛型上限的使用。比较Collection方法:
boolean |
addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。 |
2.删除
V |
remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
该方法根据键删除一个键值对,并返回值。如果没有这个键值对,将返回null。
void |
clear() 从此映射中移除所有映射关系(可选操作)。 |
该方法功能就是清空集合。
3.判断
boolean |
containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 |
boolean |
containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。 |
这两个方法,前者判断是否存在指定键,后者判断是否存在指定值。
boolean |
isEmpty() 如果此映射未包含键-值映射关系,则返回 true。 |
该方法用于判断该Map集合是否为空集合。
4.获取。
V |
get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null 。 |
int |
size() 返回此映射中的键-值映射关系数。 |
这两个方法,前者根据指定的键获取对应的值,如果集合中没有指定的键,则返回null;后者获取键值对的个数。
以上的方法为基本方法,重点方法在下面。
三、重点:Map集合的三种遍历方式。
1.第一种遍历方式:使用keySet方法。
Set<K> |
keySet() 返回此映射中包含的键的 Set 视图。 |
该方法会返回一个包含所有键的Set集合。
遍历过程:先得到所有键的集合,遍历集合,根据键得到所有的值。
1 package p01.traverseDemo01.keySetDemo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.Map; 6 import java.util.Set; 7 8 public class KeySetDemo { 9 10 public static void main(String[] args) { 11 Demo01(); 12 } 13 14 private static void Demo01() { 15 Map<Integer,String>map=new HashMap<Integer,String>(); 16 map.put(1, "wangcai"); 17 map.put(2, "xiaoqiang"); 18 map.put(3, "xiaoming"); 19 20 Set<Integer>set=map.keySet(); 21 for(Iterator<Integer>it=set.iterator();it.hasNext();) 22 { 23 Integer key=it.next(); 24 String value=map.get(key); 25 System.out.println(key+":"+value); 26 } 27 28 } 29 30 }
应当注意,结果是无序的,这是因为采用了HashMap作为示例,HashMap底层的数据结构是哈希表,存储元素的时候有自己的规则,所以无序。
2.第二种便利方式:使用entrySet方法。
Set<Map.Entry<K,V>> |
entrySet() 返回此映射中包含的映射关系的 Set 视图。 |
此方法返回值也是一个Set集合,但是存储的内容是Map.Entry对象。Map.Entry是什么东西?
JDK1.6API的解释如下:
嵌套类摘要 | |
---|---|
static interface |
Map.Entry<K,V> 映射项(键-值对)。 |
时间: 2024-10-14 20:53:00