JAVA基础 之 Map
概述:
1.键值对,key-value,具有映射关系的数据
2.Map的key不允许重复,value可以重复
3.Map里的key类似一个Set,甚至可以通过map.keySet()拿到key的Set集合
4.Map里的value类似一个List,只不过索引不再是数字,而是任意类型
5.相关类:HashMap、Hashtable(t就是小写 不是写错了~)、LinkedHashMap、Properties、TreeMap
6.HashMap和Hashtable
1.HashMap(线程不安全)、Hashtable(线程安全),所以不考虑同步问题的时候HashMap性能好些
2.Hashtable不允许null,HashMap key-value 均允许null的存在
7.LinkedHashMap遍历顺序与插入顺序一致,而HashMap不能保证顺序(不是按照添加先后遍历的)
8.Properties用来读取属性文件的类,它继承自Hashtable
9.TreeMap的操作类似TreeSet 请参见《JAVA基础 之 Set》一文,活参看java api,这里不再赘述
package com.cxy.collection; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Collection; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.TreeMap; /** * @author cxy */ public class MapTest { public static void main(String[] args) throws Exception { Map<String,String> m=new HashMap(); m.put("姓名", "cxy"); m.put("性别", "男"); m.put("邮箱", "163@163.com"); //当key不存在于Map的时候put方法可以看作是新增 m.put("邮箱", "cxyapi@163.com"); //当key存在于Map的时候put方法可以看作是更新 m.put(null, null); //HashMap key-value 均允许null的存在 System.out.println(m); System.out.println("============================"); System.out.println("m的key中是否包含'姓名'? 答:"+m.containsKey("姓名")); System.out.println("m的value中是否包含'女'? 答:"+m.containsValue("女")); System.out.println("邮箱是:"+m.get("邮箱")); //使用get方法通过key找到value System.out.println("m是否为空?答:"+m.isEmpty()); System.out.println("m大小?答:"+m.size()); System.out.println("============================"); //通过keySet方法取到Map对象的key的Set集合 Set<String> ms=m.keySet(); System.out.print("m的键(key)有:"); for(String one :ms) { System.out.print(one+" "); } System.out.println(""); //保持格式无实际用处 System.out.println("============================"); m.put("描述", "性别男,爱好女"); System.out.println(m); m.remove("描述"); //通过key删除对应的键值对 m.remove(null); System.out.println(m); System.out.println("============================"); Collection<String> vs= m.values(); System.out.print("m的值(value)有:"); for(String one :vs) { System.out.print(one+" "); } System.out.println(""); //保持格式无实际用处 System.out.println("============================"); m.clear(); //清空数据 System.out.println(m); System.out.println("============================"); Properties p=new Properties(); p.setProperty("username", "cxy"); p.setProperty("password", "123"); p.store(new FileOutputStream("d://cxytest.ini"), "机密"); //将属性写入ini文件,注释是机密 //创建另一个Properties对象去加载刚才生成的ini文件 Properties p1=new Properties(); p1.load(new FileInputStream("d://cxytest.ini")); System.out.println(p1); System.out.println("============================"); TreeMap tm = new TreeMap(); tm.put("b", "234"); tm.put("a", "123"); tm.put("c", "456"); System.out.println(tm); System.out.println("============================"); } }
相关文章连接:
声明:
1.原创文章,转载请标明并加本文连接。
2.更详尽的API请参见 http://docs.oracle.com/javase/7/docs/api/
3.文章反映个人愚见,如有异议欢迎讨论指正
上一篇: python进阶练习之——反向输出
下一篇: 四川圣诞节去哪里玩比较好 四川圣诞节