1 package test; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 public class CopyOfStringUtil { 9 10 / 11 * 定义分割常量 12 * #用于list中每个元素间的分割 13 * |用于map中每一个kv对间的分割 14 * =用于map中key与value间的分割 15 */ 16 private static final String SEP1 = “,”; 17 private static final String SEP2 = “|”; 18 private static final String SEP3 = “=”; 19 20 / 21 * List转换String 22 * 23 * @param list 24 * :需要转换的List 25 * @return String转换后的字符串 26 */ 27 public static String ListToString(List<?> list) { 28 StringBuffer sb = new StringBuffer(); 29 if (list != null && list.size() > 0) { 30 for (int i = 0; i < list.size(); i++) { 31 if (list.get(i) == null || list.get(i) == “”) { 32 continue; 33 } 34 // 如果值是list类型则调用自己 35 if (list.get(i) instanceof List) { 36 sb.append(ListToString((List<?>) list.get(i))); 37 sb.append(SEP1); 38 } else if (list.get(i) instanceof Map) { 39 sb.append(MapToString((Map<?, ?>) list.get(i))); 40 sb.append(SEP1); 41 } else { 42 sb.append(list.get(i)); 43 sb.append(SEP1); 44 } 45 } 46 } 47 return “L” + sb.toString(); 48 } 49 50 / 51 * Map转换String 52 * 53 * @param map 54 * :需要转换的Map 55 * @return String转换后的字符串 56 */ 57 public static String MapToString(Map<?, ?> map) { 58 StringBuffer sb = new StringBuffer(); 59 // 遍历map 60 for (Object obj : map.keySet()) { 61 if (obj == null) { 62 continue; 63 } 64 Object key = obj; 65 Object value = map.get(key); 66 if (value instanceof List<?>) { 67 sb.append(key.toString() + SEP1 + ListToString((List<?>) value)); 68 sb.append(SEP2); 69 } else if (value instanceof Map<?, ?>) { 70 sb.append(key.toString() + SEP1 + MapToString((Map<?, ?>) value)); 71 sb.append(SEP2); 72 } else { 73 sb.append(key.toString() + SEP3 + value.toString()); 74 sb.append(SEP2); 75 } 76 } 77 return “M” + sb.toString(); 78 } 79 80 / 81 * String转换Map 82 * 83 * @param mapText 84 * :需要转换的字符串 85 * @return Map<?,?> 86 */ 87 public static Map<String, Object> StringToMap(String mapText) { 88 89 if (mapText == null || mapText.equals(“”)) { 90 return null; 91 } 92 mapText = mapText.substring(1); 93 94 Map<String, Object> map = new HashMap<String, Object>(); 95 String[] text = mapText.split(“" + SEP2); // 转换为数组 96 for (String str : text) { 97 String[] keyText = str.split(SEP3); // 转换key与value的数组 98 if (keyText.length < 1) { 99 continue; 100 } 101 String key = keyText[0]; // key 102 String value = keyText[1]; // value 103 if (value.charAt(0) == ‘M’) { 104 Map<?, ?> map1 = StringToMap(value); 105 map.put(key, map1); 106 } else if (value.charAt(0) == ‘L’) { 107 List<?> list = StringToList(value); 108 map.put(key, list); 109 } else { 110 map.put(key, value); 111 } 112 } 113 return map; 114 } 115 116 / 117 * String转换List 118 * 119 * @param listText 120 * :需要转换的文本 121 * @return List<?> 122 */ 123 public static List<Object> StringToList(String listText) { 124 if (listText == null || listText.equals(”“)) { 125 return null; 126 } 127 listText = listText.substring(1); 128 129 List<Object> list = new ArrayList<Object>(); 130 String[] text = listText.split(”" + SEP1); 131 String listStr = “”; 132 boolean flag = false; 133 for (String str : text) { 134 if (!str.equals(“”)) { 135 if (str.charAt(0) == ‘M’) { 136 Map<?, ?> map = StringToMap(str); 137 list.add(map); 138 } else if (str.charAt(0) == ‘L’ || flag) { 139 flag = true; 140 listStr += str + SEP1; 141 } else { 142 list.add(str); 143 } 144 } 145 if (str.equals(“”)) { 146 flag = false; 147 List<?> lists = StringToList(listStr); 148 list.add(lists); 149 } 150 } 151 return list; 152 } 153 154 }
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/140405.html