我有一个字符串数组,
List<String[]> s,有这样的规律:s[0]相同部分是连续的,s[1]随意。
s.get(0) 0,b
s.get(1) 0,a
s.get(2) 0,c
s.get(3) 1,d
s.get(4) 1,a
s.get(5) 2,c
s.get(6) 3,a
。如果把s转换成map? 如下
0,bac
1,da
2,c
3,a求1高效率,可重用的方法。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xwj1003】截止到2008-06-23 20:23:35的历史汇总数据(不包括此帖):
    发帖数:48                 发帖分:735                
    结贴数:48                 结贴分:735                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    想不出什么算法, 老老实实做似乎也不慢.
    关键看你数据量有大.package test;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;public class StringTest {

    public static List<String[]> s = new ArrayList<String[]> ();
    static {
    for (int i = 0; i < 10000; i++) {
    s.add(new String[] {String.valueOf(i%100), i+","} );
    }
    }

    public static void main(String[] args) {
    long st = System.currentTimeMillis();

    test();

    long et = System.currentTimeMillis();

    System.out.println("StringTest.main():" + (et -st) + " ms");
    }

    public static void test() {
    Map<String, StringBuffer> map = new HashMap<String, StringBuffer>();
    for (String[] ss : s) {
    String k = ss[0];
    String v = ss[1];
    StringBuffer mv = map.get(k);
    if (mv == null) { mv = new StringBuffer();}
    map.put(k, mv.append(v));
    }

    System.out.println(map);
    }
    }