JAVA Map集合转String,String转Map集合(支付额外参数转换)

时间:2025-02-21 07:17:35

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);
        ("id","1");
        ("name","哆啦A梦丶幻想");
        //map转string
        String passBackParams = (objectMap);
        (passBackParams);
        try {
            //string转map
           Map map =  (passBackParams);
            (map);
        } catch (Exception e) {
            ();
        }
    }

然后两个方法的主要代码:

	//参数类型是Map<String,String> 因为支付只能用string的参数。如果诸君还需要修改的话,那也可以适当的做调整
	/**
	 *
	 * map转str
	 * @param map
	 * @return
	 */
	public static String getMapToString(Map<String,String> map){
		Set<String> keySet = ();
		//将set集合转换为数组
		String[] keyArray = (new String[()]);
		//给数组排序(升序)
		(keyArray);
		//因为String拼接效率会很低的,所以转用StringBuilder。博主会在这篇博文发后不久,会更新一篇String与StringBuilder开发时的抉择的博文。
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < ; i++) {
			// 参数值为空,则不参与签名 这个方法trim()是去空格
			if ((keyArray[i]).trim().length() > 0) {
				(keyArray[i]).append("=").append((keyArray[i]).trim());
			}
			if(i != -1){
				("&");
			}
		}
		return ();
	}
	/**
	 * 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 = ("&");
		//设置HashMap长度
		int mapLength = ;
		//判断hashMap的长度是否是2的幂。
		if(( % 2) != 0){
			mapLength = mapLength+1;
		}

		Map<String,String> map = new HashMap<>(mapLength);
		//循环加入map集合
		for (int i = 0; i < ; i++) {
			//截取一组字符串
			String[] strArray = strings[i].split("=");
			//strArray[0]为KEY  strArray[1]为值
			(strArray[0],strArray[1]);
		}
		return map;
	}

如有建议,欢迎指出。

String,StringBuffer,StringBuilder有什么区别?项目中什么时候用?