zoukankan      html  css  js  c++  java
  • Java-集合框架与数组的实际应用-组装Json字符串

    最近一直在做Json字符串的拼接工作。具体就是:按照接口开发文档,将数据库的数据查询出来,然后组成接口文档的Json形式传送给前端。所有最近都在和集合框架打交道,所以现在做一下简单的应用总结。

    第一:List集合

    1.基本知识:List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。ArrayList,LinkedList是List接口的实现类

    a.ArrayList:数组结构,特点:访问速度快,插入,删除慢。

    1)如果在初始化ArrayList的时候没有指定初始化长度的话,默认的长度为10. 

    2)ArrayList在增加新元素的时候如果超过了原始的容量的话,ArrayList扩容ensureCapacity的方案为“原始容量*3/2+1"  

    3)ArrayList是线程不安全的,在多线程的情况下不要使用。

    4)ArrayList实现遍历的几种方法:foreach();Iterator()

    b.LinkedList:链表结构,特点:插入,删除快,查询慢

    2.应用场景:List集合经常被用来存储 从数据库查询出来的对象,个人认为原因就是在于它“有序可重复”的特点。ArrayList用来存储data:[,,,]格式的数据

    第二:Map集合

    1.基本知识: Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。HashMap,LinkedHashMap,TreeMap是其实现类

    2.HashMap:特点:它符合存储关联数据的要求,其次它的存取速度快

    一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列。

    第三:set集合

    1.基本知识:Set中的元素实现了无序,不重复。常见实现类有HashSet,LinedHashSet和TreeSet这三个。

    2.HashSet:查询速度较快,不能保证存取顺序,但是LinkedHashSet能够保证存取顺序

    第四:数组

    数组,可以看作是有序可重复的,用在一些特殊的环境,例如我有一天二十四小时的部分数据,有数据的可以按照坐标一 一对应使用,无数据的就使用null代替。

    利用上面的集合框架,以及数组的特点,就可以随心所欲组成任何形式的json字符串。

    ----------------------------------------2018-01-18补充---------------------------------------

    前端:JavaScript对象与Json字符串的转换;当页面有很多数据需要传送要后端时,我们可以将数据装入Js对象中,然后使用JSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串。

      var  data={};

      data["hello"]="hello"  //给data对象添加属性

      var obj= new Array();

      data.obj = obj;  //给data对象添加数组(该数组相当于一个属性)

      var  json = JSON.stringify(data);  //将data对象转化为Json字符串

    后端:Json字符串与实体类对象的转换;后端接收到参数“json”字符串,然后进行转换成相应的实体类对象(假设该实体类对象为Object)。

      Gson gson = new Gson();  //需要导入的包为: com.google.gson.Gson

      Object obj =gson.fromJson(data, Object.class);  //obj就是实体类对象。  

    -----------------------------------------------------------------------------------------------------

  • 相关阅读:
    go函数
    Linux 查看磁盘容量、查找大文件、查找大目录
    五分钟理解一致性哈希算法(consistent hashing)
    使用Java实现三个线程交替打印0-74
    Python实现IOC控制反转
    Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
    Yandex Big Data Essentials Week1 Scaling Distributed File System
    Yandex Big Data Essentials Week1 Unix Command Line Interface Processes managing
    Yandex Big Data Essentials Week1 Unix Command Line Interface File Content exploration
    Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  • 原文地址:https://www.cnblogs.com/momoweiduan/p/8025786.html
Copyright © 2011-2022 走看看