java中map转string_字符串转list集合

java中map转string_字符串转list集合JAVAMap集合转String,String转Map集合当前两个转换方法主要用作支付宝,微信支付额外参数转换先看效果是不是诸君想要的map转string的值id=1&name=哆啦A梦丶幻想string转map的值{name=哆啦A梦丶幻想,id=1}贴代码://这里是用单元测试测试的两个方法@Testpubli…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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.net/195297.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网

    解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网最近在VMware虚拟机里玩Centos,装好后发现上不了网。经过一番艰辛的折腾,终于找到出解决问题的方法了。最终的效果是无论是ping内网IP还是ping外网ip,都能正常ping通。方法四步走:第一步,我们进入/etc/sysconfig/network-scripts目录,查看该目录有没有形如ifcfg-XXX的文件:如果你看不到以ifcfg-打头的文件(ifcfg-lo除外),…

    2022年5月12日
    36
  • 如何学习嵌入式软件

    如何学习嵌入式软件什么是嵌入式?嵌入式分为广义和狭义两种。广义的嵌入式就是片上系统(systemonachip),包括单片机、PSOC、NIOS、Microblaze等。而狭义的嵌入式就是ARM9、cortexA8等特定的跑操作系统的芯片。这里主要介绍狭义嵌入式的学习路线。还是主流的方法,先学会使用它,再深入研究底层。常用的嵌入式操作系统有Linu…

    2022年6月5日
    44
  • Java 中哈希码的说明「建议收藏」

    Java 中哈希码的说明「建议收藏」在Java中,哈希码代表对象的特征。例如下面代码对象根据HashCode由此可得出str1!=str2,str1==str3哈希码产生的依据:哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。也有相同的情况,看程序员如何写哈希码的算法。1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。2:String类的hashCode.根据String类包含的字符串的

    2025年7月23日
    2
  • pycharm的字体设置_香港3开头的固定号码是什么

    pycharm的字体设置_香港3开头的固定号码是什么具体设置路径:File->settings->Editor->FileandCodeTemplates->PythonScript

    2022年8月25日
    5
  • Vue开发手机端页面

    我的github记录册(PS:希望star):https://github.com/tonyzheng1…适配终端:讲解:http://www.w3cplus.com/mobile…源码:https://github.com/amfe/lib-f…代码规范https://github.com/pablohp…

    2022年4月8日
    38
  • windows cmd命令大全及详解_win10 cmd命令

    windows cmd命令大全及详解_win10 cmd命令命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。一、启动CMD命令提示符控制器“开始”→“运行”→输入“cmd”回车;或者:win+R(两个键同时按)打开“运行”窗口→输…

    2022年9月22日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号