日期:2014-05-18  浏览次数:20637 次

求一个小算法,前面的不行
ArrayList   s1   =   { "合计 ", "常州 ", "淮安 ", "连云港 ", "南京 ", "南通 ", "苏州 ", "宿迁 ", "泰州 ", "无锡 ", "徐州 ", "盐城 ", "扬州 ", "镇江 "};
ArrayList   s2   =   {   "合计 ", "盐城 ", "扬州 "   };

得到以下结果:
ArrayList   s3   ={ "合计 ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "盐城 ", "扬州 ", " "};  

解决立马得分

------解决方案--------------------
int i,j;
for ( i = 0; i < a1.size(); i++) {
for ( j = 0; j < a2.size(); j++) {
if (a1.get(i).equals(a2.get(j))) {
break;
}
}
if (j != a2.size()) {
a3.add(a1.get(i));
}
else {
a3.add( " ");
}
}
------解决方案--------------------
逐个取出s1数组中的字符串,跟s2的字符串比较,若有,break;否则,置空
最后s1就是s3
------解决方案--------------------
ArrayList <String> s1 = ...;
//{ "合计 ", "常州 ", "淮安 ", "连云港 ", "南京 ", "南通 ", "苏州 ", "宿迁 ", "泰州 ", "无锡 ", "徐州 ", "盐城 ", "扬州 ", "镇江 "};
ArrayList <String> s2 = ...;
//{ "合计 ", "盐城 ", "扬州 " };
List <String> tmpList1;//小的
List <String> tmpList2;//大的
if (s1.size() < s2.size()){
tmpList1 = s1;
tmpList2 = s2;
}else{
tmpList1 = s2;
tmpList2 = s1;
}
List <String> s3 = new ArrayList <String> ();
for(String var:tmpList1){
if(tmpList2.contains(var)){
s3.add(var);
}else{
s3.add( " ");
}

JDK 1.50+
------解决方案--------------------
ArrayList <String> s1 = ...;
//{ "合计 ", "常州 ", "淮安 ", "连云港 ", "南京 ", "南通 ", "苏州 ", "宿迁 ", "泰州 ", "无锡 ", "徐州 ", "盐城 ", "扬州 ", "镇江 "};
ArrayList <String> s2 = ...;
//{ "合计 ", "盐城 ", "扬州 " };
List <String> tmpList1;//小的
List <String> tmpList2;//大的
if (s1.size() < s2.size()){
tmpList1 = s1;
tmpList2 = s2;
}else{
tmpList1 = s2;
tmpList2 = s1;
}
List <String> s3 = new ArrayList <String> ();
for(String var:tmpList1){
if(tmpList2.contains(var)){
s3.add(var);
}else{
s3.add( " ");
}
}

JDK 1.50+
------解决方案--------------------
整这么复杂,放到个一SET里,或者整个hashmap,直接都当KEY放进去,完了把KEY的SET取出来一定没重复的。
------解决方案--------------------
for(int i=0;i <s1.size();i++){
if(Collections.binarySearch(s2,s1.get(i))> -1){
s3.add(s1.get(i));
else
s3.add( " ");
}
------解决方案--------------------
呵呵,我上次给你写的是JAVA里的。估计你要的是JSP里的。