对于Map集合转JSON的思考
来源:互联网 发布:肩膀痛 知乎 编辑:程序博客网 时间:2024/06/05 09:53
首先回顾一下Map的一些基础知识。
Map用于存储键值对,不允许键重复,值可以重复。
(1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。 HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步的能力。
(2)Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空; 它支持线程的同步,即任一时刻只有一个线程能写Hashtable,然而,这也导致了Hashtable在写入时会比较慢。
(3)LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的。 在遍历的时候会比HashMap慢。
(4)TreeMap不仅实现了Map接口,还实现了java.util.SortedMap接口。能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。TreeMap不允许对象是null。当用Iteraor遍历TreeMap时,得到的记录是排过序的。
接着就可以开始尝试,对于不同的Map转JSON,都会有什么特征呢?下面贴代码。
public class Test{ String string1,string2="v2",string3=""; String key = "k1",key1 = "k2",key2="",key4="k3"; Map<String,String> treeMap = new TreeMap<String, String>(); Map<String,String> hashMap= new HashMap<String, String>(); //private static final int a = 0; //static变量可以自加,于是这里也测试了一下final变量能否自加,结果final是无法用++的 //private static int a = 0; public void f(){ //treeMap.put(string1, key); //报错,TreeMap不允许键为null,值可以为null,键值也可以为空字符串"" treeMap.put(key, string1);//k1 null treeMap.put(key1, string2);//k2 v2 treeMap.put(key2, string2);//"" v2 treeMap.put(key4, string3);//k3 "" System.out.println("遍历TreeMap:"); for (String key :treeMap.keySet()) { System.out.println("key="+key+ " value="+treeMap.get(key)); } //HashMap可以有null键以及null值 hashMap.put(string1, key);//null k1 hashMap.put(key, string1);//k1 null hashMap.put(key1, string2);//k2 v2 hashMap.put(key2, string3);//"" "" hashMap.put(key4, string3);//k3 "" System.out.println("遍历HashMap:"); for (String key :hashMap.keySet()) { System.out.println("key="+key+" value="+hashMap.get(key)); } System.out.println("TreeMap转JSON后会忽略掉null值项:"+Common.JSONEncode(map)); System.out.println("HashMap转JSON后也会忽略null值项但不会忽略null键项:"+Common.JSONEncode(map2)); //StringBuffer sb = new StringBuffer(); //sb.append(string1); //sb.append(string2); //sb.append(string1+string2); //System.out.println("String默认值为null:"+sb); //a++; //System.out.println(a); } public static void main(String[] args){ Test t =new Test(); t.f(); }}
当然代码中没有附上转JSON的方法代码,但是这也不重要,清楚结论就可以了。
阅读全文
0 0
- 对于Map集合转JSON的思考
- js读取json包装的map集合
- 对于json中的map中为对象的解析
- 【转】对于学习方式的一些思考
- 对于大盘的思考
- 对于工作的思考
- 对于未来的思考
- 对于管理者的思考
- 对于模式的思考
- 对于nginx的思考
- 对于学习的思考
- 对于POJ3264的思考
- 对于人工智能的思考
- 对于测试的思考
- 对于时间的思考
- Map集合转换JSON对象
- json与javaBean,Map集合等的互相装换
- 对于集合的选择
- Vue入门学习-使用服务器传来的JSON数据交给Vue渲染HTML页面
- android 由模块化到组件化(一)
- Ubuntu14.04下网络配置与加速(Windows10、VMware )
- 程序员都应该懂一点开源协议
- Billboard(线段树)
- 对于Map集合转JSON的思考
- Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归
- HDU 4277 dfs+set去重
- 文章标题
- 计算机网络知识整理:网络层
- yolo-face 使用yolo v2 在CelebA上训练的人脸检测器
- HDU 1166 敌兵布阵(线段树or树状数组)
- http缓存机制
- iOS基础知识6