小弟现在有一数组的问题未想通的。
我从前台传值到后台(一数组的形式)。数组内的元素为:G111#0001,G111#0002,G111#0003,G222#0001,G222#0002,G222#0003,G555#0001,G666#0001,G666#0002我想根据上数组的元素得出以下结果G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002
我该怎么做?前台传到后台数组元素的元素也不是固定的,求哪位大哥指教
我从前台传值到后台(一数组的形式)。数组内的元素为:G111#0001,G111#0002,G111#0003,G222#0001,G222#0002,G222#0003,G555#0001,G666#0001,G666#0002我想根据上数组的元素得出以下结果G111#0001-0003,G222#0001-0003,G555#0001,G666#0001-0002
我该怎么做?前台传到后台数组元素的元素也不是固定的,求哪位大哥指教
解决方案 »
- 请教反射问题?。。。。
- struts2的ajax上传图片的问题
- httpClient
- struts中验证问题
- 请问高手,你们用j2EE都开发什么样的程序??
- 急求Struts2 中tabbedPanel的使用方式
- 求助:服务器端 怎么写?(有点业务) 请达人赐教,第一次使用webservice……
- EJB??
- 问一个UploadBean包上传图片的问题,java.io.IOException: Corrupt form data: premature ending
- Spring Cloud Gateway,如何把请求参数也一并路由到目标地址?
- ssh做导出报错!求大神解决!!!!
- Hibernate 一对一级联更新时 被级联的一方变成了insert.导致主键冲突!
如果前台需要是需要的已经处理好的,那么就在后台先处理好后在传递给前台
这个后台处理过程不难,无非就是对String和List的操作
String[] ss = {"G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001","G666#0002"} ;
Map<String, String> map = new HashMap<String, String>() ;
for (int i = 0; i < ss.length; i++) {
String[] strs = ss[i].split("#");
map.put(strs[0], strs[1]) ;
}
String [] newSs= new String[map.size()] ;
int i = 0 ;
for (String key :map.keySet()) {
if(map.get(key).equals("0001"))
newSs[i] =key+"#"+"0001" ;
else
newSs[i] =key+"#"+"0001-"+map.get(key) ;
i+=1;
}
for (int j = 0; j < newSs.length; j++) {
System.out.println(newSs[j]);
}
去试试吧
lotList.add("G111#0002");
lotList.add("G111#0003");
lotList.add("G111#0004");
lotList.add("G222#0005");
lotList.add("G222#0006");
lotList.add("G222#0007");
lotList.add("G555#0009");
lotList.add("G555#0010");
lotList.add("G666#0001");
Map<String, String> map = new HashMap<String, String>() ;
for (int i = 0; i < lotList.size(); i++) {
String a = lotList.get(i).toString();
String[] strs = a.split("#");
map.put(strs[0], strs[1]) ;
}
String [] newSs= new String[map.size()] ;
int i = 0 ;
for (String key :map.keySet()) {
if(map.get(key).equals("0001"))
newSs[i] =key+"#"+"0001" ;
else
newSs[i] =key+"#"+"0001-"+map.get(key) ;
i+=1;
}
for (int j = 0; j < newSs.length; j++) {
String b = newSs[j] + ",";
System.out.print(b);
}
G111#0001,G111#0002,G111#0003,G222#0004,G222#0005,G222#0006,G555#0008,G666#0009,G666#0010,G666#0011
那么我需要的结果就是G111#0001-G111#0004,G222#0004-G222#0006,G555#0008,G666#0009-G666#0011
String[] ss = {"G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001","G666#0002"} ;
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>() ;
for (int i = 0; i < ss.length; i++) {
String[] strs = ss[i].split("#");
if(map.containsKey(strs[0])) {
Map<String, String> map2 = map.get(strs[0]) ;
map2.put(strs[1], strs[0]) ;
map.put(strs[0], map2 ) ;
}else{
Map<String, String> map2 = new LinkedHashMap<String, String>() ;
map2.put(strs[1], strs[0]) ;
map.put(strs[0], map2) ;
}
}
System.out.println(map.size());
String s = "" ;
int i = 0 ;
for (String key :map.keySet()) {
Map<String, String> map2 = map.get(key) ;
int j = 0 ;
for(String key2 :map2.keySet()) {
if(j==0)
s=s+ map2.get(key2) +"#"+key2 ;
else
if(j== map2.size()-1)
s= s+"-"+key2 ;
j=j+1;
}
if(i!=map.size()-1)
s=s+",";
i=i+1 ;
}
System.out.println(s);可以了
可以使用TreeSet与TreeMap
TreeMap 对key排序 TreeSet对value排序 在遍历TreeSet即可
public static void main(String[] args) {
String[] x = {"G666#0002","G111#0001","G111#0002","G111#0003","G222#0001","G222#0002","G222#0003","G555#0001","G666#0001"};
Arrays.sort(x);
List<String> list = new ArrayList<String>();
String st1 = "";
String st2 = "";
String temp="";
for(int i = 0 ;i<x.length;i++){
st1 = x[i].substring(0, x[i].indexOf('#'));
if(i<x.length-1){
st2 = x[i+1].substring(0, x[i+1].indexOf('#'));
}else{
st2 = "";
}
String end = x[i].substring(x[i].indexOf('#')+1);
if(st2.equals(st1)){
if(temp.equals(""))
temp = end;
}else{
String val = "";
if(!temp.equals(end)){
val= st1+"#"+temp+"-"+end;
} else{
val = st1+"#"+end;
}
list.add(val);
}
}
for(String y : list){
System.out.println("*********"+y);
}
}
}不管你是什么顺序,不管从什么开始,我就是先排序然后进行一系列操作,不过我这个方法貌似有点拼凑的嫌疑,没想到好方法,互相探讨。