介绍
Jvaa集合框架中提供Map接口专门用来处理键一值映射数据的存储。Map中可以存储多个元素,每个元素都由两两个对象组成,即一个键(key)对象和一个值(value)对象,可以根据键实现对应值的映射。
由键值对映射存储元素,键是元素的关键字,值是真正的元素。
由Map的内部接口Entry对象管理键值映射
键不能重复,一旦重复会覆盖之前的键值对映射
键使用Set保存 值使用 Collection保存
与Collection接口不存在继承关
📕Map的实现类
HashMap:🗡键不能重复,保存顺序和添加顺序无关
TreeMap:🗡键不能重复,不能为Null,保存顺序按自然排序(要求key对象必须实现Comparable接口,key类型必须一致)
Hashtable:线程安全,键不能重复,不能为null;
ConcurrentHashMap 线程安全又可以保证性能,不能为null;
import java.util.*;
import java.util.Map.Entry; //引入Map的内部接口
import java.util.concurrent.ConcurrentHashMap;
class ETest{
public static void main(String[] arg){
Map m01 = new HashMap();
m01.put("a1","华安");
m01.put("a11",3.1415926);
m01.put("a2",0.618);
m01.put(null,"你愁啥?");
System.out.println("1...长度:"+m01.size() );
System.out.println("1...元素:"+m01 );
m01 = new TreeMap();
m01.put("a1","华安");
m01.put("a11",3.1415926);
m01.put("a2",0.618);
//m01.put(null,"你愁啥?");
System.out.println("2...长度:"+m01.size() );
System.out.println("2...元素:"+m01 );
m01 = new Hashtable();
m01.put("a1","华安");
m01.put("a11",3.1415926);
m01.put("a2",0.618);
//m01.put(null,"你愁啥?");
System.out.println("3...长度:"+m01.size() );
System.out.println("3...元素:"+m01 );
m01 = new ConcurrentHashMap();
m01.put("a1","华安");
m01.put("a11",3.1415926);
m01.put("a2",0.618);
//m01.put(null,"你愁啥?");
System.out.println("4...长度:"+m01.size() );
System.out.println("4...元素:"+m01 );
}//main();
}
📙存储键值对元素
key:不要求有序,不允许重复 value:不要求有序,但允许重复
一个Map对象由若干个"键-值对"组成
查询指定元素效率高
📖常用方法
Object put(key,value) | 建立键值对映射关系并保存到map集合中 | |
void putAll(Map) | 合并另一个Map集合中的所有键值对 | |
int size | 集合长度 | |
Object get(key) | 获取指定键的值 | |
Object remove(key) | 删除指定的键对应的键值对映射 | |
void clear() | 删除Map对象中所有的元素 | |
boolean containsKey(object) | 键是否存在(满足hashCode的常规协定重写equsls+hashCode) | |
boolean containsValue(Object) | 值是否存在 | |
Collection values() | 获取map中所有的value值 | |
Set keySet() | 获取所有的Key值 | |
Set entrySet() | 获取map中的所有元素,k1=v1,k2=v2,.....形式输出 | |
boolean isEmpty() | 判断集合是否为空,空返true |
📒常用方法代码示例:
运行结果:
打印结果