最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用String轉(zhuǎn)換到Map結(jié)構(gòu)

 更新時(shí)間:2021年11月03日 10:50:47   作者:老柿子  
這篇文章主要介紹了使用String轉(zhuǎn)換到Map結(jié)構(gòu),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

String轉(zhuǎn)換到Map結(jié)構(gòu)

下面的僅限于個(gè)人測(cè)試

最近工作中遇到一個(gè)問題,就是需要將一個(gè)Map < String, Object > 這樣的一個(gè)類型進(jìn)行保存,后續(xù)并進(jìn)行讀取的功能。當(dāng)時(shí)沒有想起來用常見的序列化方式,想起來Map.toString()這樣可以將Map轉(zhuǎn)換到String,但是卻沒有對(duì)應(yīng)的反向的方法。

自己就想著實(shí)現(xiàn)這樣一個(gè)功能,覺得不錯(cuò),故將轉(zhuǎn)換代碼貼在如下,但是map的序列化方式還有其他的很多方式,這個(gè)只是自己實(shí)現(xiàn)的map.toString()的反向轉(zhuǎn)換:

public Object getValue(String param) {
        Map map = new HashMap();
        String str = "";
        String key = "";
        Object value = "";
        char[] charList = param.toCharArray();
        boolean valueBegin = false;
        for (int i = 0; i < charList.length; i++) {
            char c = charList[i];
            if (c == '{') {
                if (valueBegin == true) {
                    value = getValue(param.substring(i, param.length()));
                    i = param.indexOf('}', i) + 1;
                    map.put(key, value);
                }
            } else if (c == '=') {
                valueBegin = true;
                key = str;
                str = "";
            } else if (c == ',') {
                valueBegin = false;
                value = str;
                str = "";
                map.put(key, value);
            } else if (c == '}') {
                if (str != "") {
                    value = str;
                }
                map.put(key, value);
                return map;
            } else if (c != ' ') {
                str += c;
            }
        }
        return map;
    }

測(cè)試用例

從簡(jiǎn)單到復(fù)雜

public void testFun() {
        String str1 = "{idCard=123, phonenum=1234}";
        String str2 = "{idCard=123, phonenum=1234, map={hhaha=haha}}";
        String str3 = "{idCard=123, phonenum=1234, map={hhaha=haha}, nn={en=ha}}";
        String str4 = "{nn={en=ha}, idCard=123, phonenum=1234, map={hhaha=ni, danshi={ke=shi}}}";
        Map<String, Object> mapresutl1 = (Map<String, Object>) getValue(str1);
        Map<String, Object> mapresutl2 = (Map<String, Object>) getValue(str2);
        Map<String, Object> mapresutl3 = (Map<String, Object>) getValue(str3);
        Map<String, Object> mapresutl4 = (Map<String, Object>) getValue(str4);
        System.out.println(mapresutl1.toString());
        System.out.println(mapresutl2.toString());
        System.out.println(mapresutl3.toString());
        System.out.println(mapresutl4.toString());
    }

輸出結(jié)果:

{idCard=123, phonenum=1234} {idCard=123, phonenum=1234, map={hhaha=haha}} {nn={en=ha}, idCard=123, phonenum=1234, map={hhaha=haha}} {nn={en=ha}, idCard=123, phonenum=1234, map={hhaha=ni, danshi={ke=shi}}}

該函數(shù)的功能是能夠處理將Map < String, Object > .toString的字符串再次翻轉(zhuǎn)到對(duì)應(yīng)的Map中,其中Object只能是Map類型或者其他基本的類型才行,如果是復(fù)雜的這里不涉及,或者說可以將復(fù)雜的結(jié)構(gòu)用Map的鍵值對(duì)來表示,這樣就可以用這種方式。

后來發(fā)現(xiàn),序列化的方式有很多,所以也沒有必要自己去實(shí)現(xiàn)一個(gè),map也是可以進(jìn)行序列化的

如下幾個(gè)序列化方式

java自帶的,json,hession

還有阿里的fastjson,protobuff等

上面幾個(gè)都可以實(shí)現(xiàn)map的序列化

特殊格式的String轉(zhuǎn)Map

String a ="{se=2016, format=xml, at=en co=3}";
a =  a.substring(1, a.length()-1);
Map docType = new HashMap();  
java.util.StringTokenizer items;  
for(StringTokenizer entrys = new StringTokenizer(a, ", ");entrys.hasMoreTokens();   
docType.put(items.nextToken(), items.hasMoreTokens() ? ((Object) (items.nextToken())) : null)){  
     items = new StringTokenizer(entrys.nextToken(), "=");  
   }
System.out.println(docType);
System.out.println("a:"+docType.get("a"));

不需要吧JSONArray或者JSONObject作為處理的轉(zhuǎn)存中介,String直接轉(zhuǎn)Map

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java調(diào)用百度定位api服務(wù)獲取地理位置示例

    java調(diào)用百度定位api服務(wù)獲取地理位置示例

    java調(diào)用百度定位api服務(wù)獲取地理位置示例,大家參考使用吧
    2013-12-12
  • SpringBoot整合mybatis簡(jiǎn)單案例過程解析

    SpringBoot整合mybatis簡(jiǎn)單案例過程解析

    這篇文章主要介紹了SpringBoot整合mybatis簡(jiǎn)單案例過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切

    這篇文章主要給大家介紹了關(guān)于Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法

    springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法

    本文主要介紹了springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Spring?中的InitializingBean使用示例

    Spring?中的InitializingBean使用示例

    InitializingBean?是?Spring?框架中的一個(gè)接口,用于在?Spring?容器中初始化?bean?時(shí)執(zhí)行特定的初始化邏輯,這篇文章主要介紹了Spring?中的InitializingBean使用示例,需要的朋友可以參考下
    2024-08-08
  • java上乘武功入門--反射

    java上乘武功入門--反射

    反射是Java的一種機(jī)制,一般也叫做反射機(jī)制,本文會(huì)講反射機(jī)制是什么和怎么使用,喜歡的朋友可以觀看一下,希望能給你帶來幫助
    2021-07-07
  • Spring?AI?+?ollama?本地搭建聊天?AI?功能

    Spring?AI?+?ollama?本地搭建聊天?AI?功能

    這篇文章主要介紹了Spring?AI?+?ollama?本地搭建聊天?AI?,本文通過實(shí)例圖文相結(jié)合給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 使用Spring從YAML文件讀取內(nèi)容映射為Map方式

    使用Spring從YAML文件讀取內(nèi)容映射為Map方式

    這篇文章主要介紹了使用Spring從YAML文件讀取內(nèi)容映射為Map方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例

    簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例

    這篇文章主要介紹了簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java使用通配符實(shí)現(xiàn)增強(qiáng)泛型詳解

    Java使用通配符實(shí)現(xiàn)增強(qiáng)泛型詳解

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。本文將利用通配符實(shí)現(xiàn)增強(qiáng)泛型,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08

最新評(píng)論

浪卡子县| 鞍山市| 岑溪市| 武穴市| 泰宁县| 临漳县| 富蕴县| 上杭县| 隆昌县| 建阳市| 佛坪县| 临朐县| 磴口县| 宜丰县| 潞西市| 明溪县| 铜梁县| 保定市| 桦南县| 马山县| 榆林市| 鄂温| 台安县| 武义县| 宁都县| 柞水县| 丰顺县| 新丰县| 武冈市| 保康县| 垦利县| 江都市| 凤城市| 股票| 黄大仙区| 顺平县| 准格尔旗| 珲春市| 崇礼县| 竹北市| 洛宁县|