需求:
List list="tc1,tc2,tc3,bo1,bi1,bo2,bo3,bi2,bi3,cg1,cg2,cg3,b1n,b2n,b3n" (此数据只是一部分)
我要把上面 list里的字符串分别把字母相同的放入Map里
如
map1 map1(1,tc1);
map1(2,tc2);
map1(3,tc3);map2 map2(1,bo1);
map2(2,bo2);
map2(3,bo3);map3 map3(1,bi1);
map3(2,bi2);
map3(3,bi3);map4 map4(1,cg1);
map4(2,cg2);
map4(3,cg3);map5 map5(1,b1n);
map5(2,b2n);
map5(3,b3n);map1到map5需要用循环来处理因为List里面的字符串只是一少部份,需要详细代码
List list="tc1,tc2,tc3,bo1,bi1,bo2,bo3,bi2,bi3,cg1,cg2,cg3,b1n,b2n,b3n" (此数据只是一部分)
我要把上面 list里的字符串分别把字母相同的放入Map里
如
map1 map1(1,tc1);
map1(2,tc2);
map1(3,tc3);map2 map2(1,bo1);
map2(2,bo2);
map2(3,bo3);map3 map3(1,bi1);
map3(2,bi2);
map3(3,bi3);map4 map4(1,cg1);
map4(2,cg2);
map4(3,cg3);map5 map5(1,b1n);
map5(2,b2n);
map5(3,b3n);map1到map5需要用循环来处理因为List里面的字符串只是一少部份,需要详细代码
你应该自己稍微动动脑筋的。import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class SameChars { public static void main(String[] args){
String list="tc1,tc2,tc4,bo5,bi9,bo1,bi8,cg1,cg3,cg5,b2n,b3n,b4n,cg4,cg8";
String[] items=list.split(",");
Hashtable<String,StringBuffer> result=new Hashtable<String,StringBuffer>();
for(int i=0; i<items.length;i++){
String curStr=items[i];
String curStrNoNum=curStr.replaceAll("\\d*", "");
if (result.containsKey(curStrNoNum)){
StringBuffer sb=result.get(curStrNoNum);
sb.append(",");
sb.append(curStr);
}else{
StringBuffer sb=new StringBuffer(curStr);
result.put(curStrNoNum, sb);
}
}
Collection<StringBuffer> whatYouWant=result.values();
List<Map> maps=new ArrayList<Map>();
for(StringBuffer sb:whatYouWant){
String[] segs=sb.toString().split(",");
Map m=new HashMap();
for(int i=1; i<=segs.length;i++){
m.put(i, segs[i-1]);
}
System.out.println(m);
}
}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SameChars { public static void main(String[] args){
String list="tc1,tc2,tc4,bo5,bi9,bo1,bi8,cg1,cg3,cg5,b2n,b3n,b4n,cg4,cg8";
String[] items=list.split(",");
Hashtable<String,Map> result=new Hashtable<String,Map>();
Pattern p=Pattern.compile("[0-9]+");
for(int i=0; i<items.length;i++){
String curStr=items[i];
Matcher m=p.matcher(curStr);
String curStrNoNum=curStr.replaceAll("\\d*", "");
if (m.find()){
if (!result.containsKey(curStrNoNum)){
Map map=new HashMap();
result.put(curStrNoNum, map);
}
Map map=result.get(curStrNoNum);
map.put(m.group(), curStr);
}
}
System.out.println(result.values());
}
}