在一次调用中将ArrayList.toString()转换回ArrayList

dot*_*bie 10 java collections arraylist tostring

我有一个toString()代表ArrayList.

toString()值复制到剪贴板,我想将其复制回我的IDE编辑器,并ArrayList在一行中创建实例.事实上,我真正在做的是:

  • 我的ArrayList.toString()包含设置单元测试所需的数据.
  • 我想将此ArrayList.toString()复制到我的编辑器中,以针对此边缘情况构建测试
  • 我不想手工解析任何东西

我的输入如下:

__PRE__

以下不起作用:

  • Arrays.asList()
  • 谷歌收藏 Lists.newArrayList()

建议?

Bal*_*usC 24

子串的括号远,拆分它上,(逗号和空格),最后将其馈送到Arrays#asList().

 String s = "[15.82, 15.870000000000001, 15.92, 16.32, 16.32, 16.32, 16.32, 17.05, 17.05, 17.05, 17.05, 18.29, 18.29, 19.16]";
 List<String> list = Arrays.asList(s.substring(1, s.length() - 1).split(", "));
Run Code Online (Sandbox Code Playgroud)

请注意,这将适用于您的特定情况,但不适用于所有情况.例如,您可以拥有一个字符串列表,其中至少有一个字符串包含后续逗号和空格.分裂将失败.

  • 我想你想要s.length() - 1,因为endIndex中的字符不包含在子字符串中 (2认同)

dot*_*bie 1

这可行,但也许有人有更优雅的东西?

    List<String> list = Lists.newArrayList(Splitter.on(",").omitEmptyStrings().split("JUN10, SEP10, DEC10, MAR11, JUN11, SEP11, DEC11, MAR12, JUN12, SEP12, DEC12, MAR13, DEC13, DEC14"));
    assertEquals(14, list.size());
Run Code Online (Sandbox Code Playgroud)