今天开发的时候遇到个小问题,解决后拿出来晒晒,看看大家还有没有更好的办法,呵呵!

要求:两个字符串数组集合,A数组两个元素code和name,B数组两个元素code和number,需要把B数组中没有A数组的code进行补缺并number置零,并且要按A数组code的排序方式。

举例:

        List aList  =   new  ArrayList();
aList.add(
new  String[]{ " 1 " , " name1 " });
aList.add(
new  String[]{ " 2 " , " name2 " });
aList.add(
new  String[]{ " 3 " , " name3 " });

List bList1 
=   new  ArrayList();
bList1.add(
new  String[]{ " 1 " , " 5 " });
bList1.add(
new  String[]{ " 2 " , " 5 " });
List bList2 
=   new  ArrayList();
bList2.add(
new  String[]{ " 3 " , " 5 " });

解答:

     public  List handle(List bList, List aList) {
for  (Object object : aList) {
String[] a 
=  (String[]) object;
boolean  flag  =   false ;
for  (Object object1 : bList) {
String[] b 
=  (String[]) object1;
if (b[ 0 ].equals(a[ 0 ])) {
flag 
=   true ;
break ;
}
}
if ( ! flag) {
String[] b 
=  (String[]) bList.get( 0 );
String[] newA 
=   new  String[b.length];
newA[
0 =  a[ 0 ];
newA[
1 =   " 0 " ;
bList.add(newA);
}
}
return  bList;
}
为了排序还需要加一个排序类

class  exComparator  implements  Comparator {
public   int  compare(Object arg0, Object arg1) {
String[] vo1 
=  (String[])arg0;
String[] vo2 
=  (String[])arg1;
int  result  =   0 ;
if (Integer.parseInt(vo1[ 0 ]) < Integer.parseInt(vo2[ 0 ])) {
result 
=   - 1 ;
else   if (Integer.parseInt(vo1[ 0 ]) > Integer.parseInt(vo2[ 0 ])) {
result 
=   1 ;
else  {
result 
=   0 ;
}
return  result;
}
}

验证:

        List example  =  handle(bList1,aList);
Collections.sort(example, 
new  exComparator());
for  (Object object : example) {
String[] ss 
=  (String[]) object;
System.out.println(
" ======== " + ss[ 0 ] + " ======= "   +  ss[ 1 ]);
}
example 
=  handle(bList2,aList);
Collections.sort(example, 
new  exComparator());
for  (Object object : example) {
String[] ss 
=  (String[]) object;
System.out.println(
" ======== " + ss[ 0 ] + " ======= "   +  ss[ 1 ]);
}

结果:

======== 1 ======= 5
======== 2 ======= 5
======== 3 ======= 0
======== 1 ======= 0
======== 2 ======= 0
======== 3 ======= 5

 

over............