java map转dictionary_Java中List转换String,String转换List,Map转换String,Stri...

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Utils {

/**

* 定义分割常量 (#在集合中的含义是每个元素的分割,|主要用于map类型的集合用于key与value中的分割)

*/

private static final String SEP1 = "#";

private static final String SEP2 = "|";

/**

* List转换String

*

* @param list :需要转换的List

*

@return String转换后的字符串

*/

public static String ListToString(List> list) {

StringBuffer sb = new StringBuffer();

if (list != null && list.size() > 0) {

for (int i = 0; i < list.size(); i++) {

if (list.get(i) == null || list.get(i) == "") {

continue;

}

// 如果值是list类型则调用自己

if (list.get(i) instanceof List) {

sb.append(ListToString((List>) list.get(i)));

sb.append(SEP1);

} else if (list.get(i) instanceof Map) {

sb.append(MapToString((Map, ?>) list.get(i)));

sb.append(SEP1);

} else {

sb.append(list.get(i));

sb.append(SEP1);

}

}

}

return "L" + encodeBase64(sb.toString());

}

/**

* Map转换String

*

* @param map :需要转换的Map

*

@return String转换后的字符串

*/

public static String MapToString(Map, ?> map) {

StringBuffer sb = new StringBuffer();

// 遍历map

for (Object obj : map.keySet()) {

if (obj == null) {

continue;

}

Object key = obj;

Object value = map.get(key);

if (value instanceof List>) {

sb.append(key.toString() + SEP1 + ListToString((List>) value));

sb.append(SEP2);

} else if (value instanceof Map, ?>) {

sb.append(key.toString() + SEP1

+ MapToString((Map, ?>) value));

sb.append(SEP2);

} else {

sb.append(key.toString() + SEP1 + value.toString());

sb.append(SEP2);

}

}

return "M" + encodeBase64(sb.toString());

}

/**

* String转换Map

*

* @param mapText          :需要转换的字符串

*

@return Map,?>

*/

public static Map StringToMap(String mapText) {

if (mapText == null || mapText.equals("")) {

return null;

}

mapText = mapText.substring(1);

mapText = decodeBase64(mapText);

Map map = new HashMap();

String[] text = mapText.split("\\" + SEP2); // 转换为数组

for (String str : text) {

String[] keyText = str.split(SEP1); // 转换key与value的数组

if (keyText.length <= 1) {

continue;

}

String key = keyText[0]; // key

String value = keyText[1]; // value

if (value.charAt(0) == 'M') {

Map, ?> map1 = StringToMap(value);

map.put(key, map1);

} else if (value.charAt(0) == 'L') {

List> list = StringToList(value);

map.put(key, list);

} else {

map.put(key, value);

}

}

return map;

}

/**

* String转换List

*

* @param listText :需要转换的文本

*

@return List>

*/

public static List StringToList(String listText) {

if (listText == null || listText.equals("")) {

return null;

}

listText = listText.substring(1);

listText = decodeBase64(listText);

List list = new ArrayList();

String[] text = listText.split(SEP1);

for (String str : text) {

if (str.charAt(0) == 'M') {

Map, ?> map = StringToMap(str);

list.add(map);

} else if (str.charAt(0) == 'L') {

List> lists = StringToList(str);

list.add(lists);

} else {

list.add(str);

}

}

return list;

}

/**

* 编码

* @param str

*

@return String

*/

public static String encodeBase64(String str){

if (str == null || str.isEmpty()) {

return str;

}

return new sun.misc.BASE64Encoder().encode(str.getBytes());

}

/**

* 解码

* @param str

*

@return

*/

public static String decodeBase64(String str) {

byte[] bt = null;

try {

sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

bt = decoder.decodeBuffer( str );

} catch (IOException e) {

e.printStackTrace();

} finally {

if (bt != null) {

return new String(bt);

} else {

return null;

}

}

}

}

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页