Map有什么特点?
1、增加元素使用的是put();
2、采用了 Key-value键值对映射的方式进行存储;
3、key在Map里面是唯一的但是valsue可以重复,一个key对应一个value;
HashMap ( Map的实现类 ) 的特点:
1、键是哈希表结构,可以保证键的唯一性,
2、当向已存在key的Map中添加元素时,会覆盖掉旧值,并将旧值返回。
3、它允许使用 null 值和 null 键,但不保证映射的顺序,特别是它不保证该顺序恒久不变(即不会保证存储的顺序与输出的顺序恒久不变)。
Map中元素,可以将key序列、value序列单独抽取出来。
1、使用keySet()抽取key序列,将map中的所有keys生成一个Set。
2、使用values()抽取value序列,将map中的所有values生成一个Collection。
为什么keySet()生成Set,values()生成Collection?
答:因为key总是独一无二的(Set具有唯一性),value允许重复;
HashMap常用方法实例:
package cn.zyq.Aug01;/**
* Map相关练习
*/import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;import java.util.Map.Entry;publicclassTest{publicstaticvoidmain(String[] args){
Map<Integer, String> map=newHashMap<Integer, String>();/**
** 添加元素
*/
map.put(101,"MM");
map.put(102,"OO");
map.put(103,"PP");
map.put(104,"QQ");
map.put(103,"nn");/**
** 获取map长度
*///因为key值唯一,所以会将相同的覆盖
System.out.println("map长度为:"+map.size());/**
** 遍历map元素,获取所有的键
*/for(Integer key:map.keySet()){
System.out.println(key+":"+map.get(key));}/**
** 拿出key值,返回一个set型的集合
*/
Set<Integer> set= map.keySet();
System.out.println("拿出key,返回set型集合");
System.out.println(set);//通过keySet()的返回值输出value的值
System.out.println("通过keySet()输出value:");for(Integer key:set){
System.out.println(map.get(key));}/**
** 拿出value值,返回Collection型集合
*/
Collection<String> col= map.values();
System.out.println("拿出value,返回Collection型集合");
System.out.println(col);/**
**删除key为103的键值
*/
map.remove(103);
System.out.println("删除后元素的键值对个数为:"+map.size());/**
** 判断是否存在为key值的键
*/
System.out.println("判断是否存在key=101的键:"+map.containsKey(101));/**
** 判断是否存在为value值的键
*/
System.out.println("判断是否存在value=MM的键:"+map.containsValue("MM"));/**
** 判断map是否为空
*/
System.out.println("判断map是否为空:"+map.isEmpty());/**
** get(),通过key的值得到value的值
*/int getkey=101;
String s= map.get(getkey);
System.out.println(getkey+"对应的值为:"+s);/**
** 通过map中entrySet()方法,输出键值对
*/
Set<Entry<Integer, String>> se= map.entrySet();for(Entry<Integer, String> key:se){
System.out.println(key);//两种方式均可//System.out.println(key.getKey()+":"+key.getValue());}}}
执行结果供参考: