日期:2014-05-20  浏览次数:20862 次

该怎样做才能一次得到所有值放到这个Object[][] vos 二维数组?

/*
*得到多个单号
/
public void setHBDetail(String[] masterid) {
List<String> list = new ArrayList<String>();
for (String item : masterid) {
if (!list.contains(item)) {
list.add(item);
}
}
String[] ary = list.toArray(new String[0]);
String a = "_";
Map<String, Integer> map = new HashMap<String, Integer>();
for (String value : ary) {
// 得到去重复后的单号
List<InboundDetail> list2 = this.inboundService.getMasterid(value);
for (InboundDetail inboundDetail : list2) {
// 根据单号及SKU查询
List<InboundDetail> list3 = this.inboundService.getMasteridandSku(value, inboundDetail.getSkuNo());
for (InboundDetail inboundDetail2 : list3) {
Integer b = (int) inboundDetail2.getExppcsqty();
Object[][] vos = { { inboundDetail2.getSkuNo(), b }, };
HashMap<String, Integer> mapResult = new HashMap<String, Integer>();
for (int i = 0; i < vos.length-1; i++) {
Object[] vo = vos[i];
String id=(String) vo[0];
Integer num = (Integer) vo[1];
for (int j = i+1; j < vos.length; j++) {
Object[] vo_j = vos[j];
                          String id_j=(String) vo_j[0];
Integer num_j =(Integer) vo_j[1];
                         if(id.equals(id_j))num+=num_j;
}
                                          mapResult.put(id,num);

}
System.out.println(mapResult);
}
}
}
}
但是还是
{Q290010101=1}
{Q290060101=1}
{Q290060501=1}
{Q290010101=2}
我自己刚刚写的一个例子
public static void main(String[] args) {
Object[][] vos = { { "Q290010101", 1 }, { "Q290060101", 1 }, { "Q290060501", 1 }, { "Q290010101", 2 }, };   
HashMap<String, Integer> mapResult = new HashMap<String, Integer>();    
for (int i = 0; i < vos.length; i++) {      
Object[] vo = vos[i];          
Integer num = mapResult.get(vo[0]);     
if (num == null) {       
num = 0;            }      
mapResult.put((String) vo[0], num + (Integer) vo[1]);    
}       
System.out.println(mapResult);  
}


这样的话,得到的就是正确的,代码错的原因也知道了,因为每次循环只拿到了一个值,所以永远都比较不出重复的,那么该怎样循环才能一次得到所有值放到这个Object[][] vos 二维数组?赋值的方式没得到结果,对二维数组不是很熟,麻烦懂的人用代码写出来,谢谢,正确的结果应该是: