循环遍历字符串的arraylist

时间:2016-02-19 20:21:10

标签: java string loops arraylist

我正在编写java代码以循环ArrayList StringString。如果import java.util.ArrayList; public class Client { public static void main(String[] args) { ArrayList<String> list= new ArrayList<String>(); list.add("hello"); list.add("me"); //without loop: this gives me correct output if(list.get(0).length()==2) list.add(0, "**"); if(list.get(1).length()==2) list.add(1, "**"); /* when i loop i get an error, for(int i=0; i<list.size()-1; i++) { if(list.get(i).length()==2) list.add(i, "**"); } */ System.out.println(list); } } 的长度为4,则在其前面添加一个特定字符。 这是我写的代码。当我明确地做事时它会起作用,但是当我写这个循环时它没有,我无法找到我的错误。

以下是一个例子。我希望输出为(&#34;你好&#34;,&#34; **&#34;,&#34;我&#34;)

{{1}}

3 个答案:

答案 0 :(得分:2)

size() - 1错了,添加需要跳过额外的内容。

for (int i=0; i < list.size(); i++) {
    if (list.get(i).length() == 2) {
        list.add(i, "**");
        i++; // Do skip the item
    }
}
BTW:有人可能写道:

    List<String> list = new ArrayList<>();
    Collections.addAll(list, "hello", "me");

答案 1 :(得分:-1)

您可以使用增强的for循环遍历所有字符串并具有直接访问权限,而不必索引来访问它们。

for (String s : list)
{
    /* CODE */
}

而不是必须使用get方法来访问字符串及其长度,您只需使用s变量并使用s.length()

答案 2 :(得分:-1)

你应该这样做

import java.util.ArrayList;
public class Client {
public static void main(String[] args) {
            ArrayList<String> list= new ArrayList<String>();
            ArrayList<String> newList= new ArrayList<String>();
            list.add("hello");
            list.add("me");
            for(int i=0; i<list.size(); i++) {
                if(list.get(i).length()==2)
                    newList.add("**");
                else
                    newList.add(list.get(i));
            }
            System.out.println(newList);
}