我把2个类都贴上,大家研究下: public class BiaoOne { String zuhao; String qingqiuleixing; int xuhao; int zixuhao; String biaozhun; String guishu; String xunhuan; int xunhuanxianggeshu;
BiaoOne(){
}
BiaoOne(String s1, String s2, int i1, int i2, String s3, String s4, String s5, int i3){ this.zuhao = s1; this.qingqiuleixing = s2; this.xuhao = i1; this.zixuhao = i2; this.biaozhun = s3; this.guishu = s4; this.xunhuan = s5; this.xunhuanxianggeshu = i3; } public String getBiaozhun() { return biaozhun; } public void setBiaozhun(String biaozhun) { this.biaozhun = biaozhun; } public String getGuishu() { return guishu; } public void setGuishu(String guishu) { this.guishu = guishu; } public String getQingqiuleixing() { return qingqiuleixing; } public void setQingqiuleixing(String qingqiuleixing) { this.qingqiuleixing = qingqiuleixing; } public int getXuhao() { return xuhao; } public void setXuhao(int xuhao) { this.xuhao = xuhao; } public String getXunhuan() { return xunhuan; } public void setXunhuan(String xunhuan) { this.xunhuan = xunhuan; } public int getXunhuanxianggeshu() { return xunhuanxianggeshu; } public void setXunhuanxianggeshu(int xunhuanxianggeshu) { this.xunhuanxianggeshu = xunhuanxianggeshu; } public int getZixuhao() { return zixuhao; } public void setZixuhao(int zixuhao) { this.zixuhao = zixuhao; } public String getZuhao() { return zuhao; } public void setZuhao(String zuhao) { this.zuhao = zuhao; }
你要做什么
map里面"a"位置放的是String[]吗?
public class BiaoOne {
String zuhao;
String qingqiuleixing;
int xuhao;
int zixuhao;
String biaozhun;
String guishu;
String xunhuan;
int xunhuanxianggeshu;
BiaoOne(){
}
BiaoOne(String s1, String s2, int i1, int i2, String s3,
String s4, String s5, int i3){
this.zuhao = s1;
this.qingqiuleixing = s2;
this.xuhao = i1;
this.zixuhao = i2;
this.biaozhun = s3;
this.guishu = s4;
this.xunhuan = s5;
this.xunhuanxianggeshu = i3;
} public String getBiaozhun() {
return biaozhun;
} public void setBiaozhun(String biaozhun) {
this.biaozhun = biaozhun;
} public String getGuishu() {
return guishu;
} public void setGuishu(String guishu) {
this.guishu = guishu;
} public String getQingqiuleixing() {
return qingqiuleixing;
} public void setQingqiuleixing(String qingqiuleixing) {
this.qingqiuleixing = qingqiuleixing;
} public int getXuhao() {
return xuhao;
} public void setXuhao(int xuhao) {
this.xuhao = xuhao;
} public String getXunhuan() {
return xunhuan;
} public void setXunhuan(String xunhuan) {
this.xunhuan = xunhuan;
} public int getXunhuanxianggeshu() {
return xunhuanxianggeshu;
} public void setXunhuanxianggeshu(int xunhuanxianggeshu) {
this.xunhuanxianggeshu = xunhuanxianggeshu;
} public int getZixuhao() {
return zixuhao;
} public void setZixuhao(int zixuhao) {
this.zixuhao = zixuhao;
} public String getZuhao() {
return zuhao;
} public void setZuhao(String zuhao) {
this.zuhao = zuhao;
}
}///////////////////////////////////////////////////////////////////////////////////
import java.util.Map;
import java.util.TreeMap;
import java.util.ArrayList;
import java.util.Iterator;public class Test1 {
Map map = new TreeMap();
Test1()
{
map.put("package.head.requesttype","001");
map.put("package.head.user","PICC");
map.put("package.head.code","12345678");
map.put("package.body.policyno","00PICC1234567890");
map.put("package.body.startdate","20070101");
map.put("package.body.insured","张三");
map.put("package.third.driverlist.driver.name","李1");
map.put("package.third.driverlist.driver.age","20");
map.put("package.third.driverlist.driver.name","李2");
map.put("package.third.driverlist.driver.age","21");
map.put("package.third.driverlist.driver.name","李3");
map.put("package.third.driverlist.driver.age","22");
map.put("package.third.date","19990909");
}
public String adapter(Map map)
{
ArrayList arraylist = new ArrayList();
BiaoOne biao1 = new BiaoOne("1","7000",1,0,"package.head.requesttype","head","n",0);
arraylist.add(biao1);
BiaoOne biao2 = new BiaoOne("1","7000",2,0,"package.head.user","head","n",0);
arraylist.add(biao2);
BiaoOne biao3 = new BiaoOne("1","7000",3,0,"package.head.code","head","n",0);
arraylist.add(biao3);
BiaoOne biao4 = new BiaoOne("1","7000",4,0,"package.body.policyno","body","n",0);
arraylist.add(biao4);
BiaoOne biao5 = new BiaoOne("1","7000",5,0,"package.body.startdate","body","n",0);
arraylist.add(biao5);
BiaoOne biao6 = new BiaoOne("1","7000",6,0,"package.body.insured","body","n",0);
arraylist.add(biao6);
BiaoOne biao7 = new BiaoOne("1","7000",7,0,"package.third.driverlist.driver","","y",2);
arraylist.add(biao7);
BiaoOne biao8 = new BiaoOne("1","7000",7,1,"package.third.driverlist.driver.name","","n",0);
arraylist.add(biao8);
BiaoOne biao9 = new BiaoOne("1","7000",7,2,"package.third.driverlist.driver.age","","n",0);
arraylist.add(biao9);
BiaoOne biao10 = new BiaoOne("1","7000",8,0,"package.third.date","third","n",0);
arraylist.add(biao10);
BiaoOne biao = new BiaoOne();
String outstr = ""; //最后返回的字符串
int where = 0; //解码方案:0字符串 1非标准XML 2标准XML
if(where == 0){
Iterator iterator = arraylist.iterator();
while (iterator.hasNext()) { //遍历
biao = (BiaoOne) iterator.next();
if (biao.xunhuan.equalsIgnoreCase("n")) { //非循环项
outstr = outstr + (String)(map.get(biao.getBiaozhun()) + "|");
}
else { //循环项
int number = biao.getXunhuanxianggeshu(); //循环项个数
String[] bigarr = new String[100]; //定义一个临时大数组用来拼接循环项
String[] arrValue = null; //转载循环字段的多个值
for (int i = 0; i < number; i++) { //将循环字段的值按一定顺序提出放到大数组中
biao = (BiaoOne) iterator.next();
arrValue = (String[]) (map.get(biao.getBiaozhun())); for (int j = 0; j < arrValue.length; j++) {
bigarr[j * number + 1] = arrValue[j];
}
}
for (int i = 0; i < bigarr.length; i++) {
outstr = outstr + bigarr[i];
}
}
}//whlie
}//if
System.out.println(outstr);
return "";
} public static void main(String[] args) {
Test1 test1 = new Test1();
test1.adapter(test1.map);
}
}
while (iterator.hasNext()) { //遍历
biao = (BiaoOne) iterator.next();
if (biao.xunhuan.equalsIgnoreCase("n")) { //非循环项
outstr = outstr + (String)(map.get(biao.getBiaozhun()) + "|");
}
else { //循环项
int number = biao.getXunhuanxianggeshu(); //循环项个数
String[] bigarr = new String[100]; //定义一个临时大数组用来拼接循环项
String[] arrValue = new String[number]; //转载循环字段的多个值
for (int i = 0; i < number; i++) { //将循环字段的值按一定顺序提出放到大数组中
biao = (BiaoOne) iterator.next();
arrValue[i] = (String) (map.get(biao.getBiaozhun())); for (int j = 0; j < arrValue.length; j++) {
bigarr[j * number + 1] = arrValue[j];
}
}
for (int i = 0; i < bigarr.length; i++) {
outstr = outstr + bigarr[i];
}
}
}//whlie这样修改一下,就可以跑通了。至于具体的细节。我也没时间,今天周末,我要回家了。
.
不过可以肯定你问题不是出在你说的这句话
我的测试代码
Map map=new HashMap();
String t[]={"1","2"};
map.put( "a",t);
String[] arr = (String[]) map.get("a");
System.out.println(arr[1]);
一切ok如果说出错的话就是你map.put的时候没有放入一个数组 导致cast错误
接分
lz呀lz,本来我可以拿分的,结果......我都问你了“map里面"a"位置放的是String[]吗?”
你也回答了“是string,怎么会是[]呢?”怎么还要给别人分呢?
下面我的分析首先取出这个("1","7000",7,0,"package.third.driverlist.driver","","y",2);xunhuan=y所以进入else块然后取下面一个信息("1","7000",7,1,"package.third.driverlist.driver.name","","n",0);通过package.third.driverlist.driver.name去取map里的值map里有3个相关值
map.put("package.third.driverlist.driver.name","李1");
map.put("package.third.driverlist.driver.name","李2");
map.put("package.third.driverlist.driver.name","李3");map是key value
而key是一个set set不能重复你map.size测试下是9而不是14
1,map设计错误 照你的意思容器不能是map
2,map对应值错误是string而不是String[]解决方案
map.put("package.third.driverlist.driver.name","李1");
map.put("package.third.driverlist.driver.name","李2");
map.put("package.third.driverlist.driver.name","李3");
改称
map.put("package.third.driverlist.driver.name",{"李1","李1","李1"});
留言我给大家分