for(int i=0;i<list.size();i++)
{
    String s=(String)list.get(i);
    out.println(s);
}
打印结果为:
强磁1,低电压1
强磁1
强磁1
低电压2
强磁5
低电压7
低电压12
有没有什么方法能得到这样一个字符串
强磁8,低电压22因为这段代码已经是写在第2个for循环里了,所以效率越高越好

解决方案 »

  1.   

    补充下:
    因为一开始并不知道会有强磁,低电压
    所以if(s.substring().equals("强磁"))  这样子不行
      

  2.   


    List list = new ArrayList();

    list.add("强磁");
    list.add("强磁");
    list.add("强磁");
    list.add("强磁");

    list.add("低电压");
    list.add("低电压");
    list.add("低电压");

    HashMap map = new HashMap();

    for(int i = 0; i < list.size(); i++) {

    String key = list.get(i).toString();
    if(!map.containsKey(key)) {
    map.put(key, 1);
    } else {
    int value = Integer.valueOf(map.get(key).toString());
    map.remove(key);
    map.put(key, ++value);
    }

    }

    Iterator iterator = map.keySet().iterator();

    while (iterator.hasNext()) {
    String key = iterator.next().toString();
    System.out.println("key---->" + key);
    String value = map.get(key).toString();
    System.out.println("value---->" + value);
    }
    你的字符串怎么本来就有数字跟在后面了????
    根据你的想法,写了一个,可能不完全合适,但是实现思想就这样,自己改改把
      

  3.   


    你的问题没有说明白,或者说有点矛盾。
    如果强磁换为aaa
    低电压换为bbb
    请问你想得到的结果是什么?
      

  4.   

    强磁1,低电压1 
    强磁1 
    强磁1 
    低电压2 
    强磁5 
    低电压7 
    低电压12
    xxx3,yyy4,zzz5 强磁1,低电压1  表示强磁出现1次,低电压出现1次
    我需要在最后做一个统计,强磁和低电压总共各出现了几次
    即“强磁8,低电压22,xxx3,yyy4,zzz5 ” 
      

  5.   


    void main(List list){
       HashMap result = new HashMap();   for(int i=0;i <list.size();i++) 
       { 
            String s=(String)list.get(i); 
            dealARow(s, result);
       }   //输出result 
    }
    void dealARow(String s, HashMap map)
    {
       String [] array = s.split(",");
       for(int i = 0; i < array.length; i++){
           String record = array[i];
           dealARecord(record, map);
       }
    }void dealARecord(String record, HashMap map)
    {
        String record_name = ...;// 取得描述
        int record_qty = ....;//取得数量
         Integer total = (Integer)map.get(record_name);
         if(total == null)
         {
             total = Integer.valueOf(record_qty);
         }else
         {
             total = total + record_qty;
         }
         map.put(record_name, total);
    }
      

  6.   

    public static void main(String[] args) {
    List list = new ArrayList();
    list.add("强磁1");
    list.add("低电压4"); list.add("强磁1");
    list.add("低电压1");
    list.add("强磁1");
    list.add("强磁1"); int count1 = 0, count2 = 0;
    String temp1 = "", temp2 = "";
    for (int i = 0; i < list.size(); i++) {
    String s = (String) list.get(i);
    if (s.indexOf("强磁") != -1) {
    s = s.replace("强磁", "");
    count1 += Integer.parseInt(s);
    temp1 = "强磁" + count1;
    }
    if (s.indexOf("低电压") != -1) {
    s = s.replace("低电压", "");
    count2 += Integer.parseInt(s);
    temp2 = "低电压" + count2;
    }
    }
    System.out.println(temp1 + "," + temp2);
    }
      

  7.   

    list是从数据里读出来一个结果集,我代码贴出来也没用3楼和8楼的朋友,因为我一开始并不知道list里会有“强磁”、“低电压”,所以首先要把这2个字符串取出来。我运行了7楼的代码,但输出为null=0。package mypackage.cx;import java.util.*;public class a {
    public static void main(String[] str)
    {
    List list=new ArrayList();
    list.add("强磁1,低电压1");
    list.add("强磁2,低电压3");
    list.add("强磁4");
    list.add("低电压5");
    list.add("低电压6");
    list.add("强磁1,低电压7");
    list.add("强磁11");
    list.add("阿阿阿阿2,阿阿阿3,阿阿4");

    HashMap result = new HashMap(); 

      for(int i=0;i <list.size();i++) 
      { 
      String s=(String)list.get(i); 
          dealARow(s, result); 
      }    System.out.println(result.toString());
      //输出result 
    }
    public static void dealARow(String s, HashMap map) 

      String [] array = s.split(","); 
      for(int i = 0; i < array.length; i++){ 
          String record = array[i]; 
          dealARecord(record, map); 
      } 
    } public static void dealARecord(String record, HashMap map) 

        String record_name = null;// 取得描述 
        int record_qty = 0;//取得数量 
        Integer total = (Integer)map.get(record_name); 
        if(total == null) 
        { 
            total = Integer.valueOf(record_qty); 
        }else 
        { 
            total = total + record_qty; 
        } 
        map.put(record_name, total); 

    }
      

  8.   

    晕死.String record_name = null;// 取得描述 
        int record_qty = 0;//取得数量 这样当然是0啊. 你要计算这两个值啊.等等给你完全代码.
      

  9.   

    完整如下:public static void main(String[] str) 

    List list=new ArrayList(); 
    list.add("强磁1,低电压1"); 
    list.add("强磁2,低电压3"); 
    list.add("强磁4"); 
    list.add("低电压5"); 
    list.add("低电压6"); 
    list.add("强磁1,低电压7"); 
    list.add("强磁11"); 
    list.add("阿阿阿阿2,阿阿阿3,阿阿4");  HashMap result = new HashMap();    for(int i=0;i <list.size();i++) 
      { 
      String s=(String)list.get(i); 
          dealARow(s, result); 
      }    System.out.println(result.toString()); 
      //输出result 

    public static void dealARow(String s, HashMap map) 

      String [] array = s.split(","); 
      for(int i = 0; i < array.length; i++){ 
          String record = array[i]; 
          dealARecord(record, map); 
      } 
    }  public static void dealARecord(String record, HashMap map) 

    int index = findNumberIndex(record);
    if(index < 0)
    {
    return;
    }
        String record_name = record.substring(0, index);// 取得描述 
        int record_qty = Integer.parseInt(record.substring(index));//取得数量 
        Integer total = (Integer)map.get(record_name); 
        if(total == null) 
        { 
            total = Integer.valueOf(record_qty); 
        }else 
        { 
            total = total + record_qty; 
        } 
        map.put(record_name, total); 

    private static int findNumberIndex(String s) {
    s = s.trim();
    for(int i = 0; i< s.length(); i ++)
    {
    char c = s.charAt(i);
    if(c>='1' && c <='9' )
    {
    return i;
    }
    }

    return -1;
    }
      

  10.   

    方法findNumberIndex()页可以如下:private static int findNumberIndex(String s) {
    Pattern p = Pattern.compile("\\d");
    Matcher m = p.matcher(s);
    if(m.find())
    {
    return m.start();
    }

    return -1;
    }
      

  11.   

    我不会写代码
    说下思路吧
    楼主可以先检查每个字符串中那些是数字,取出来赋值给NUM,然后把数字和前面的内容分开赋值给NAME。
    分别装入一个JAVABEAN(name,num),
    然后把JAVABEAN放入LIST对象M中。
    最后根据不同的NAME去建立个COUNT对象。
    并把相同NAME的NUM对象递加,赋值给COUNT。
    在把取得的NAME,count最后放入LIST供外面打印!
      

  12.   

    答:参考代码:HashMap<String,Integer> hm=new HashMap<String, Integer>();
    List list = new ArrayList();
        list.add("强磁1");
        list.add("低电压4");  
        list.add("强磁1");
        list.add("低电压1");
        list.add("强磁2");
        list.add("强磁3,低电压12,强磁2,强磁5");
       
        for(int i=0;i <list.size();i++) 
        { 
            String s=(String)list.get(i); 
            String[] sp=s.split(",");//分解"强磁3,低电压12"形式
        
         for(String e:sp){//对每一个"强磁3"形式
              String[] ss=e.split("(?<!\\d+)(?=\\d+$)");
           int v=Integer.parseInt(ss[1]);//取出整数值
          //统计各个字符串总数
           hm.put(ss[0], hm.get(ss[0])==null?
                 v:
                 (v+hm.get(ss[0])) )  ;
         }//for(e)
        } //for
       
    //最后形成楼主要的"低电压17,强磁14"的形式
        String rs=hm.toString().replaceAll("\\{|\\}|=| ", "");
    System.out.println("最后结果:"+rs);程序运行结果:
    最后结果:低电压17,强磁14