JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类
- <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>
JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类的更多相关文章
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换
public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ publ ...
- 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因
声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...
- java中创建字符串的两种方式(“”与new String())及区别
结论:通过""创建的字符串实际上在java堆中只有一个,而通过new string创建出来的字符串在java堆中占有不同的内存. 第一个True表明这两个在内存中拥有相同的地址,那 ...
- java中八种基本数据类型以及它们的封装类,String类型的一些理解
在我们面试或者考试过程中经常会考到八种基本数据类型以及它们的封装类,那么有哪八种基本数据类型呢?它们的封装类又是什么呢? 首先,八种基本数据类型分别是:int.short.float.double.l ...
- python中2进制、10进制、16进制等之间的转换
10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...
- Java中char和String的相互转换
转自:http://blog.csdn.net/yaokai_assultmaster/article/details/52082763 Java中char是一个基本类型,而String是一个引用类型 ...
- Java中几种常用数据类型之间转换的方法
Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...
- 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接
长久以来,我们被教导字符串的连接最好用StringBuffer.StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence.StringBuf ...
- (转)java 中unsigned类型的转换
转自:http://blog.sina.com.cn/s/blog_77bf45a90101dld9.html 在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned ...
- Java中short和int的转换
例子[1]: 第一种情况: short a = 1; a = a + 1; // 这一步会报错 System.out.print(a); 编译器会报错,原因如下: 第二种情况: short a = 1 ...
随机推荐
- AT&T 和 Intel 汇编语法的主要区别
转自AT&T 和 Intel 汇编语法的主要区别 作为一个爱折腾的大好青年,补番之余还要补一些 Linux 下的基础,比如 GDB 的正确使用方法.但无论是看 gdb 还是 gcc -S 里的 ...
- IDEA 整合Junit实现自动生成测试代码
1.安装插件 junit generator 重启IDEA,完成安装. 2. 选中需要测试的方法,按alt + insert 即可自动生成测试类\方法 3. 设置
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-007-给BEAN运行时注入值placeholder、@Value
一.用placeholder给bean运行时注入值的步骤 Spring取得placeholder的值是用${...} 1.声明placeholder bean (1)java方式 In order t ...
- linux c/c++ GDB教程详解
学习使用了GDB一段时间后,发现它真的好强大!好用! GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在U ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(2)
使用maven执行编译和测试 1.maven执行编译 (1).在pom.xml上点右键,选择Maven build... (2).在Goals里输入clean complie,执行编译 执行结果: [ ...
- 确保客户端可以接收到服务端的异常serviceDebug includeExceptionDetailInFaults="true"
1.为了确保客户端可以接收到服务端反馈的异常 在服务端的配置文件中需要有 <system.serviceModel> <behaviors> <serviceBehavi ...
- 登陆与注册以及Session
Session 保存状态是在 登陆窗口 检查用户密码的动作上执行 .Models namespace 注册与登陆以及Session.Models { public class UserBF { p ...
- 使用Xcode查找项目中的中文字符串
打开”Find Navigator” 切换搜索模式到 “Find > Regular Expression” 输入@"[^"]*[\u4E00-\u9FA5]+[^" ...
- Android中TextView输入字数统计和限制
在Android开发应用的时候,文本编辑框中最多输入140个字,经常会显示还剩多少字以限制用户输入的字数, EditText content;//定义一个文本输入框 TextView hasnum;/ ...
- [codevs3295]落单的数
题目描述 Description 有n个数(n是奇数),其中n-1个数两两成对,有1个数落单,找出这个数.要求O(n)的时间复杂度,O(1)的空间复杂度 输入描述 Input Description ...