解析字符串,然后生成相应的ArrayList。解决不难。只是,你这样做的目的是什么?练习?
如果是在解决实际问题,可能你的设计方案就得重新考虑了。

解决方案 »

  1.   

    你可以采用xml格式,会更好。
      

  2.   

    是啊,以你知己想要的方式解吸字符串。这样做的意义在哪里呢?web 和java 数据定义比较好。。赞同
      

  3.   

    写错了用xml 与 java 这样的格式比较好。
      

  4.   

    看看 totodo(是时候了,小土豆仙) 的建议,很有道理的.首先确认你这么做的合理性,在我们大家看来,是一种无用功. 你现在已经有一个ArrayList的聚集了,为什么要转换为String呢? 如果是为了分布式程序的数据传输, ArrayList实现了Serializable接口,完全可以通过RMI或者java-over-iiop的形式来传输.
    当然你如果坚持需要转化为String, 那么使用基于XML的方式是最好的选择.
      

  5.   


    public class Test
    {
        public static String compressSpace(String s)
        {
            String ss="";
            for(int i=0;i<s.length();i++)
                if (s.charAt(i)!=' ')
                    ss+=s.charAt(i);
            return ss;
        }
        public static String[] getSplitedString(String words,String token)
        {
            java.util.Vector v = new java.util.Vector();
            java.util.StringTokenizer st = new java.util.StringTokenizer(words,token);
            while (st.hasMoreElements())
            {
                v.add(st.nextElement());
            }
            String[] a=new String[v.size()];
            v.toArray( a );
            return a;
        }
        public static String getElement(String s)
        {
            return s.substring(1,s.indexOf("]"));
        }
        public static java.util.ArrayList  loadIntoArrayList(String s)
        {
            s = compressSpace(s)+",";
            s = s.substring(1,s.length()-1);
            System.out.println(s);
            java.util.ArrayList m =new java.util.ArrayList();
            while(s.indexOf('[')>=0)
            {
                String e = getElement( s );
                s = s.substring(s.indexOf(']')+2);
                String[] _mm = getSplitedString(e,",");
                java.util.ArrayList mm = new java.util.ArrayList();
                for(int i=0;i<_mm.length;i++)
                    mm.add(_mm[i]);
                m.add(mm);
            }
            return m;
        }
        public static void main(String[] args) {
            String s = "[[0, 0, 0], [3, 2, 1], [6, 4, 2], [9, 6, 3], [12, 8, 4]]";
            java.util.ArrayList m = loadIntoArrayList(s);
            System.out.println(m);
        }}
      

  6.   

    loadIntoArrayList(s)接收字符串"[[0, 0, 0], [3, 2, 1], [6, 4, 2], [9, 6, 3], [12, 8, 4]]"。返回ArrayList
      

  7.   

    真的有热心人为楼主实现了!我也热心一番.给 "feiyuegaoshan(飞跃)"  的实现做了单元测试,代码如下:
    public class TestTest extends TestCase {
        public TestTest(String name) {super(name);}    public void testConversion() {
            String correctStr = "[[0, 0, 0], [3, 2, 1], [6, 4, 2], [9, 6, 3], [12, 8, 4]]";
            ArrayList list = Test.loadIntoArrayList(correctStr);
            assertNotNull(list);
            assertEquals(correctStr, list.toString());
            ArrayList newList = Test.loadIntoArrayList(list.toString());
            assertEquals(list, newList);        String invalidStr = "foo";
            list = Test.loadIntoArrayList(invalidStr);
            assertNull(list);        list = Test.loadIntoArrayList(null);
            assertNull(list);
        }
    }
    运行结果能够说明 "feiyuegaoshan(飞跃)" 的实现是正确的,但是没有处理边界情况.处理的字符串没有做有效性判断,楼主如果要采用,记着自己要处理.