类似于IP地址与主机名,身份证号与个人等,这种一一对应的关系,就叫做映射。Java中专门用来存储这种有映射关系的元素的集合叫做Map集合。
1.Collection集合中元素都是单个的,而Map集合中元素成对出现,且有映射关系(由键可找值)。 2.Collection集合叫单列集合,Map集合叫双列集合。 3.Map集合中键不可以重复,而值可以重复。 4.Map集合中键和值得类型可以不同。
Map接口常用的子类有: HashMap<K,V>:内部采用哈希表结构,元素存取无序。
LinkedHashMap<K,V>:内部采用哈希表+链表的结构,链表保证元素存取的有序。 注意事项:存储自定义类型的时候,需重写hashCode方法和equals方法。
注意事项:put方法放入元素时,如果原集合中没有指定的键,则返回的值为null,如果有对应的键,则新的值替换原来的值,返回被替换的值。
遍历Map集合有两种方式,分别对应Map集合中的两种方法——keySet方法和entrySet方法。
步骤: 1.将Map集合中的所有的键放入一个Set集合中。 2.用遍历Set集合的方法,获取每一个键。 3.依次用Map集合中的get方法用键获取值,达到遍历。 代码演示:
//假设这是个有多个元素的HashMap集合map Set<String> keys = map.keySet(); // 遍历键集 得到 每一个键 for (String key : keys) { //key 就是键 //获取对应值 String value = map.get(key); System.out.println(key+"->"+value); }先来了解一下什么叫键值对: 键值对:Map存放得键(K)与值(V)优有着一一对应的关系,这样的一对元素叫键值对。 键值对对象(Entry):Entey将键值对封装成了一个对象,即键值对对象。 Entry也提供了获取键与值的方法:
public K getKey();//获取Entry对象中的键。 public V getValue();//获取Entry对象中的值。步骤: 1.利用Map集合中的entrySet方法将Map集合中的所有键值对放入Set集合中返回。 2.遍历Set集合,获取每一个entry对象。 3.依次用entry的getKey或者getValue方法,达到遍历的目的。 代码演示:
//假设map是个有元素的HashMap集合 Set<Entry<String,String>> entrySet = map.entrySet(); // 遍历得到每一个entry对象 for (Entry<String, String> entry : entrySet) { // 解析 String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+"->"+value); }因为Map集合的键是唯一的,如果有自定义类型是键的话,为了保证键的唯一,则自定义类必须重写hashCode方法和equals方法,来保证自定义类型的唯一。如果想存取有序,则可以使用LinkedHashMap集合。