存储特点
-
键值对存放数据
-
键(key-k):无序、无下标、元素不可重复
-
值(value-v):无序、无下标、元素可以重复
常用实现类
-
HashMap
-
JDK1.2 底层哈希表实现 线程不安全,效率高
-
-
LinkedHashMap
-
JDK1.2 是HashMap的子类,底层哈希表实现 线程不安全,效率高
-
-
TreeMap
-
JDK1.2 底层红黑树实现,是SortedMap的实现类 线程不安全,效率高
-
-
Hashtable
-
JDK1.0 底层哈希表实现 线程安全,效率低
-
-
Properties
-
JDK1.0 是Hashtable的子类,底层哈希表实现 线程安全,效率低
-
创建
-
建议使用多态
Map<键的泛型,值的泛型> 集合名=new 实现类名<>();
常用方法
-
V put(K,V):将键值对添加至集合
-
如果键已经存在,则进行值的覆盖
-
-
boolean containsKey(键):判断是否包含指定键
-
boolean containsValue(值):判断是否包含指定值
-
V get(K):根据键获取对应值,不存在返回null
-
V remove(K):根据键移除整个键值对
-
int size():获取集合长度
-
一个键值对是一个元素,长度为1
-
遍历
-
键遍历
-
Set<键的泛型> keySet():获取所有的键放入Set集合返回
//创建一个 说明-具体值的Map集合 Map<String, String> map = new HashMap<>(); map.put("tel", "13333333333"); map.put("username", "zhangsan"); map.put("password", "123456"); map.put("password", "456789"); //键遍历 //先获取所有的键 Set<String> set1 = map.keySet(); //遍历所有的键 set1.forEach(k-> System.out.println("键:"+k+" 值:"+map.get(k))); //外遍历 for (String k : set1) { System.out.println("键:" + k + " 值:" + map.get(k)); }
-
-
值遍历
-
Collection<值的泛型> values():获取所有的值放入Collection集合返回
//获取所有的值 Collection<String> coll = map.values(); //自遍历 coll.forEach(v-> System.out.println("值:"+v)); //外遍历 for (String v : coll) { System.out.println("值:"+v); }
-
-
键值对遍历
-
Set<键值对对象> entrySet():获取所有的键值对对象放入Set集合返回
-
Entry:Map接口的内部接口,表现形式为Map.Entry<K,V>
-
K getKey():获取键值对对象中的键
-
V getValue():获取键值对对象中的值
//获取所有的键值对对象 Set<Map.Entry<String, String>> set2 = map.entrySet(); //遍历所有的键值对对象 set2.forEach(entry-> System.out.println("键:"+entry.getKey()+" 值:"+entry.getValue())); //外遍历 for (Map.Entry<String, String> entry : set2) { System.out.println("键:" + entry.getKey() + " 值:" + entry.getValue()); }
-
-
自遍历
-
forEach(BiConsumer实现类对象)
map.forEach(new BiConsumer<String, String>() { @Override public void accept(String k, String v) { System.out.println("键:"+k+" 值:"+v); } }); System.out.println("lambda简化:::::"); map.forEach((k,v)-> System.out.println("键:"+k+" 值:"+v));
-
使用
-
如果键为自定义类型,必须重写HashCode和equals方法才能保证哈希表的去重
-
HashMap可以存放null值,键可以有0-1个null,值可以有0-多个null
-
LinkedHashMap在HashMap的基础上可以保证元素存入和取出的顺序一致
-
TreeMap可以根据键对元素进行默认的升序排序
-
如果键为自定义类型,则必须重写排序规则(两种方式与TreeSet一致)
-
键不能为null,会导致空指针
-
-
Hashtable不能存放null值
-
Properties只能存放String类型
-
不推荐使用多态
-
不能添加泛型
-
setProperty(String K,String V):添加键值对,相当于put方法
-
V getProperty(String K):根据键获取值,相当于get方法
-
load(输入流对象):通过输入流将配置文件内容读取到集合中
-