Map转换为另一种Map方法

开始写这个方法的时候觉得一点都不对,开始笔者用的是HashMap,忘记了HashMap中是无序的,之后换成了LikedHashMap,使之变的有序存储,之后实现了这个方法,然后又发现,好像这个方法没多大用处,之后自己就写博客保存自己的编程经历。之后觉得这个方法对笔者帮助不大,就没有进行更全面的改进,只适合用来借鉴。希望以码会友。

	/**
	 * 将Map<String,String[]> 转换为Map<String,String>
	 * @param xAxis 业务需求的元素
	 * @return 转换好的Map<String,String>
	 * @throws Exception 方法抛出异常,
	 * ArrayIndexOutOfBoundsException:如果Map长度大于3抛出数组下标越界异常
	 */
	public static Map<String, String> mapToString(Map<String, String[]> xAxis) throws Exception{
		//返回值
		Map<String, String> result = new LinkedHashMap<>();
		//将所有键存入迭代器
		Set<String> keySet = xAxis.keySet();
		
		//遍历次数
		int count = 1;
		//遍历key获取value
		for(String key:keySet){
			System.out.println(xAxis.get(key));
			//如果第一个value的长度大于1
			if(count == 1 && key.toString().equals("type")){
				//获取value
				String[] str = xAxis.get(key);
				//如果数组参数大于1,抛出ArrayIndexOutOfBoundsException
				if(str.length >= 2) throw new ArrayIndexOutOfBoundsException("参数异常");
				//获取value
				String value = str[0];
				//将key/value存入map
				result.put(key.toString(), value);
				//计数
				count++;
			}
			if(count == 2 && key.toString().equals("data")){
				//将String[]遍历使用StringBuffer添加
				StringBuilder buff = new StringBuilder();
				buff.append('[');
				for(String s : xAxis.get(key)){
					System.out.println(s);
					buff.append("'"+s+"',");
				}
				buff.append(']');
				//拼接完成处理字符
				//找到多余的字符下标
				int index = buff.toString().lastIndexOf(',');
				//字符长度
				int strLength = buff.toString().length();
				//处理之后的字符使用subString切割字符
				//从开始到多余字符下标,然后拼接从多余字符下标到字符末尾
				String value = buff.toString().substring(0,index)+buff.toString().substring(index+1, strLength);
				//将key/value添加到map
				result.put(key.toString(), value);
				count++;
			}
			if(count >= 3){
				break;
			}
		}
		return result;
	}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

programming_dl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值