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;
public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<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());
}
}
}
执行结果供参考: