java map string list_JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类...

 
 
 
 
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 

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" + EspUtils.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" + EspUtils.EncodeBase64(sb.toString());

}

/**

* String转换Map

*

* @param mapText

*            :需要转换的字符串

* @param KeySeparator

*            :字符串中的分隔符每一个key与value中的分割

* @param ElementSeparator

*            :字符串中每个元素的分割

* @return Map,?>

*/

public static Map StringToMap(String mapText) {

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

return null;

}

mapText = mapText.substring(1);

mapText = EspUtils.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 

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 = EspUtils.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;

}

}

 
 

最终版本

 
 
运行结果:
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值