已经得到值,现在需要判断:
Q290010101 1
Q290060101 1
Q290060501 1
Q290010101 2
将Q290010101的值相加,也就是
Q290010101 3
Q290060101 1
Q290060501 1
应该怎么做? 写的代码如下:
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 = "_";
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; 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);
}
}
}
}
但是得到的还是
Q290010101 1
Q290060101 1
Q290060501 1
Q290010101 2
因为每次循环只取到一个值,这样比的话永远都不会重复,想知道该怎么改这个才可以实现
Q290010101 3
Q290060101 1
Q290060501 1javamap
Q290010101 1
Q290060101 1
Q290060501 1
Q290010101 2
将Q290010101的值相加,也就是
Q290010101 3
Q290060101 1
Q290060501 1
应该怎么做? 写的代码如下:
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 = "_";
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; 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);
}
}
}
}
但是得到的还是
Q290010101 1
Q290060101 1
Q290060501 1
Q290010101 2
因为每次循环只取到一个值,这样比的话永远都不会重复,想知道该怎么改这个才可以实现
Q290010101 3
Q290060101 1
Q290060501 1javamap
if(map.get(key)!=null){
map.put(key,map.get(key)+value);
}else{
map.put(key,value);
}
}
大概算法是这样,具体语法对不对,你自己测试下吧。
String[] str = str2.split("_");
setHBDetail(str);
String str2 = masterStr;//得到合并单据的多个单号
String[] str = str2.split("_");//以“_”分割
setHBDetail(str);将单号放入setHBDetail方法中 我要做的就是,将这多个单号下的SKU进行比较,如果SKU相同,值相加
单据不止两个,有多个