java中map转string_字符串转list集合
2023-06-13 09:13:38 时间
大家好,又见面了,我是你们的朋友全栈君。
JAVA Map集合转String,String转Map集合##
当前两个转换方法主要用作支付宝,微信支付额外参数转换
先看效果是不是诸君想要的 map转string的值 id=1&name=哆啦A梦丶幻想
string转map的值 {name=哆啦A梦丶幻想, id=1}
贴代码:
//这里是用单元测试测试的两个方法
@Test
public void filet(){
Map<String,String> objectMap = new HashMap<>(3);
objectMap.put("id","1");
objectMap.put("name","哆啦A梦丶幻想");
//map转string
String passBackParams = StrUtils.getMapToString(objectMap);
System.out.println(passBackParams);
try {
//string转map
Map map = StrUtils.getStringToMap(passBackParams);
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
}
}
然后两个方法的主要代码:
//参数类型是Map<String,String> 因为支付只能用string的参数。如果诸君还需要修改的话,那也可以适当的做调整
/**
*
* map转str
* @param map
* @return
*/
public static String getMapToString(Map<String,String> map){
Set<String> keySet = map.keySet();
//将set集合转换为数组
String[] keyArray = keySet.toArray(new String[keySet.size()]);
//给数组排序(升序)
Arrays.sort(keyArray);
//因为String拼接效率会很低的,所以转用StringBuilder。博主会在这篇博文发后不久,会更新一篇String与StringBuilder开发时的抉择的博文。
StringBuilder sb = new StringBuilder();
for (int i = 0; i < keyArray.length; i++) {
// 参数值为空,则不参与签名 这个方法trim()是去空格
if (map.get(keyArray[i]).trim().length() > 0) {
sb.append(keyArray[i]).append("=").append(map.get(keyArray[i]).trim());
}
if(i != keyArray.length-1){
sb.append("&");
}
}
return sb.toString();
}
/**
* 2018年10月24日更新
* String转map
* @param str
* @return
*/
public static Map<String,String> getStringToMap(String str){
//感谢bojueyou指出的问题
//判断str是否有值
if(null == str || "".equals(str)){
return null;
}
//根据&截取
String[] strings = str.split("&");
//设置HashMap长度
int mapLength = strings.length;
//判断hashMap的长度是否是2的幂。
if((strings.length % 2) != 0){
mapLength = mapLength+1;
}
Map<String,String> map = new HashMap<>(mapLength);
//循环加入map集合
for (int i = 0; i < strings.length; i++) {
//截取一组字符串
String[] strArray = strings[i].split("=");
//strArray[0]为KEY strArray[1]为值
map.put(strArray[0],strArray[1]);
}
return map;
}
完
如有建议,欢迎指出。
String,StringBuffer,StringBuilder有什么区别?项目中什么时候用?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/195297.html原文链接:https://javaforall.cn
相关文章
- 女生学java_Java Server Pages
- Java高并发读写文件[通俗易懂]
- Java基础入门笔记06——String类和StringBuffer类,Java中的三大集合,Set集合,List集合,Map集合,Collection类
- java SpringBoot登录验证token拦截器
- java创建线程池的几种方式_Java中的线程池
- java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍
- 【Java 集合】Java 集合主要脉络 ( Collection | Map | List | Set )
- 数据库解锁Java,优雅连接Oracle数据库(java使用oracle)
- 开启Java之门:访问MySQL数据库(java访问mysql数据库)
- 技巧Linux环境下提高Java编译效率的技巧(linux下java编译)
- Linux上部署Java项目实践指南(linux部署java项目)
- 工具Linux上使用Java开发的利器:选择指南(linux选择java)
- 服务器上的文件Java获取Linux服务器文件:简单又高效的操作方法(java获取linux)
- 使用Java实现Redis数据存储(redis集成java)
- Java 关闭 Redis 连接的指南(java关闭redis)
- Redis使用get查询Map(redis获取map命令)
- 在JSTLEL中处理java.util.Map,及嵌套List的情况