开始写这个方法的时候觉得一点都不对,开始笔者用的是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;
}