JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类
2024-10-14 01:27:57
- <pre name="code" class="java"></pre><pre name="code" class="java"><pre name="code" class="java">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" + 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<String, Object> StringToMap(String mapText) {
- if (mapText == null || mapText.equals("")) {
- return null;
- }
- mapText = mapText.substring(1);
- mapText = EspUtils.DecodeBase64(mapText);
- Map<String, Object> map = new HashMap<String, Object>();
- 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<Object> StringToList(String listText) {
- if (listText == null || listText.equals("")) {
- return null;
- }
- listText = listText.substring(1);
- listText = EspUtils.DecodeBase64(listText);
- List<Object> list = new ArrayList<Object>();
- 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;
- }
- }
- </pre><br>
- <pre></pre>
- 最终版本
- <pre></pre>
- <pre name="code" class="java">运行结果:<img src="http://hi.csdn.net/attachment/201109/29/0_1317259591S9xc.gif" alt=""></pre>
- <pre></pre>
- </pre>
最新文章
- 数据库备份Sql
- AngularJS学习---更多模板(More Templating) step 8
- css3学习总结2--CSS3圆角边框
- 我的android学习经历18
- Oracle学习笔记1:win7 x64下安装Oracle10g
- asp.net获取文件夹下的所有文件
- iOS 并发概念浅析
- HDU3367+并查集应用
- GPIO模拟串口注意是事项
- iOS runtime的应用实例
- Linux基础(七)
- Angular学习笔记(一)
- 使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项
- Java中用正则表达式判断日期格式是否正确
- Spring Security入门(2-2)Spring Security 的运行原理 2
- Android实训案例(五)——四大组件之一ContentProvider的使用,通讯录的实现以及ListView的优化
- windows下安装MongoDB扩展和配置
- 真的无语, 今天遇到一个奇葩的事情: http 会话劫持
- P2472 [SCOI2007]蜥蜴(网络流)
- Effective C++(第三版)笔记 ---- 第一部分让自己习惯C++
热门文章
- BZOJ 3713: [PA2014]Iloczyn
- HDU 1025 Constructing Roads In JGShining&#39;s Kingdom(DP+二分)
- loadrunner http协议put模式脚本编写
- 通过navicat连接mysql服务器提示SQL Error (1130): Host &#39;192.168.1.100&#39; is not allowed to connect to this MySQL server
- Linux中与DNS相关的内容
- table 表头固定
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-005-定义切面使用@Aspect、@EnableAspectJAutoProxy、<;aop:aspectj-autoproxy>;
- ANDROID_MARS学习笔记_S01原始版_018_SERVICE之Parcel
- Layout Resource官方教程(3)在layout中用include嵌入其它layout
- 以编程方式使用 Word 中的内置对话框