将多个String放入ArrayList中

时间:2013-12-07 21:33:26

标签: java

所以我这样做:

        int len = lv.getCount();

    List<String> Cool = null;
    SparseBooleanArray checked = lv.getCheckedItemPositions();
    for (int i = 0; i < len; i++)
        if (checked.get(i)) {
            String item = String.valueOf(names.get(i));
            int start = item.lastIndexOf('=') + 1;
            int end = item.lastIndexOf('}');
            String TEST = item.substring(start, end);

            Log.d("Log", TEST);

            Cool = new ArrayList<String>();

            Cool.add(TEST);

        }


            String NEW = StringUtils.join(Cool, ',');

            Log.d("Log", NEW);

每次用下一个项目替换列表中的东西。我如何让它把弦放在彼此之后。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

List<String> Cool = new ArrayList<String>();

在顶部创建列表

Cool = new ArrayList<String>();

并删除此行,因为它将始终创建您不想要的新列表

答案 1 :(得分:1)

您在for循环的每次迭代中构建new ArrayList

 Log.d("Log", TEST);
 Cool = new ArrayList<String>(); // NOT HERE!!!!
 Cool.add(TEST);

在循环之外构造它一次

List<String> Cool = new ArrayList<String>(); // also Cool should be cool.

答案 2 :(得分:0)

它继续重置列表的原因是因为你在循环中初始化了List。 在循环外初始化它,算法将起作用。

初​​始化:

  

Cool = new ArrayList();

更正后的代码:

int len = lv.getCount();

List<String> Cool = new ArrayList<String>();
SparseBooleanArray checked = lv.getCheckedItemPositions();
for (int i = 0; i < len; i++)
    if (checked.get(i)) {
        String item = String.valueOf(names.get(i));
        int start = item.lastIndexOf('=') + 1;
        int end = item.lastIndexOf('}');
        String TEST = item.substring(start, end);

        Log.d("Log", TEST);

        Cool.add(TEST);

    }


        String NEW = StringUtils.join(Cool, ',');

        Log.d("Log", NEW);