美文网首页
字典序列化

字典序列化

作者: galaxy_zheng | 来源:发表于2019-10-10 18:16 被阅读0次

我们程序中⽤用到了了⼀一个数组 a ,数组的每个元素都是⼀一个字(map/dict)。
字典的 key/value 都是字符串串,字符串串中可包含任意字符。
示例例:
a[0]["k1"] = "v1"
a[0]["k2"] = "v2"
a[1]["A"] = "XXX"
实际使用过程中,我们自定义了一个基于字符串串的存储结构,数组元素之间用“\n”分割,字典元素之间使用“ ; ”分割, key/value 之间用“=”分割。
上述数据序列列化之后,应该得到一个字符串串:
"k1=v1;k2=v2\nA=XXX"
请实现⼀一个“保存”函数、一个“加载”函数。
text = store(a); //把数组保存到⼀一个字符串串中
a = load(text); //把字符串串中的内容读取为字典数组
请考虑所有边界情况,不不要出现bug。在满足上述需求的前提下,可自行增加一些规则和约定。

  /**
     * 测试
     */
    private void test() {
        Map<String, String> map = new HashMap<>();
        map.put("k1", "v1");
        map.put("k2", "v2");
        Map<String, String> map2 = new HashMap<>();
        map2.put("A", "xxx");
        Map<String, String> map3 = new HashMap<>();
        map3.put("B", "123");
        map3.put("C", "asd");
        Map[] arr = new Map[3];
        arr[0] = map;
        arr[1] = map2;
        arr[2] = map3;

        System.out.println(Arrays.toString(arr));
        store(arr);
        load("k1=v1");
    }

    /**
     * 保存
     * @param arr
     * @return
     */
    public String store(Map[] arr) {
        if (arr == null || arr.length < 0) return "";
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            Map<String, String> map = arr[i];

            String temp = "";
            for (String key : map.keySet()) {
                stringBuilder.append(temp);
                String value = map.get(key);
                stringBuilder.append(key).append("=").append(value);
                temp = ";";
            }
            if (i != arr.length - 1) {
                stringBuilder.append("\\n");
            }
        }
        System.out.println(stringBuilder);
        return stringBuilder.toString();
    }


    /**
     * 读取
     * @param string
     * @return
     */
    public Map[] load(String string) {
        if (TextUtils.isEmpty(string)) return null;
        String[] split = string.split("\\\\n");
        Map[] arr = new Map[split.length];

        for (int i = 0; i < split.length; i++) {
            String s1 = split[i];
            String[] split2 = s1.split(";");
            Map<String, String> map = new HashMap<>();

            for (String s3 : split2) {
                String[] split3 = s3.split("=");
                map.put(split3[0], split3[1]);
            }
            arr[i] = map;
        }
        System.out.println(Arrays.toString(arr));
        return arr;
    }

相关文章

  • 字典序列化

    我们程序中⽤用到了了⼀一个数组 a ,数组的每个元素都是⼀一个字(map/dict)。字典的 key/value ...

  • 字典序

  • 字典序

    字典序 题目原链接:https://www.nowcoder.com/practice/6c9d8d2e426c4...

  • [HBase] - 理解 HBase Rowkey 字典排序

    我们都知道 HBase 的数据根据 rowkey 字典序排序的,理解这个概念很重要。 先理解名词 - 「字典序」 ...

  • day4作业

    #######1.已知⼀一个列列表,求列列表中⼼心元素。 2.已知⼀一个列列表,求所有元素和。 3.已知⼀一个列列...

  • 2018-10-08-day7Homework

    1.已知一个列表,求列表中心元素。 结果:5 2.已知一个列表,求所有元素和。 结果:45 3.已知一个列表,输出...

  • 字典序算法笔记

    一、相关概念介绍 字典序字典序就是按照字典中出现的顺序对字符进行排序。 全排列给定多个字符,可以按照任意顺序进行排...

  • Leetcode-Easy 953. Verifying an

    题目描述 给定一组单词和字母顺序,然后判断单词之间是否按字典序顺序排序。 字典序的理解:设想一本英语字典里的单词,...

  • 补作业10-8列表

    1.已知⼀一个列列表,求列列表中⼼心元素。 2.已知⼀一个列列表,求所有元素和。 3.已知⼀一个列列表,输出所有奇...

  • Python 列表

    1.已知⼀一个列列表,求列列表中⼼心元素。 2.已知⼀一个列列表,求所有元素和。 3.已知⼀一个列列表,输出所有奇...

网友评论

      本文标题:字典序列化

      本文链接:https://www.haomeiwen.com/subject/kvvapctx.html