Arraylist正在沿着新添加的元素打印先前添加的元素

时间:2014-01-24 17:18:33

标签: java arraylist

我希望我的arraylist打印这样的元素:

1894,

1895,

1896,

等。

但我得到1894年,1895年,1896年

     ArrayList<Integer> years = new ArrayList<Integer>();
    int j;

    for (j = 1894; j < 2014; j++)

    {
        years.add(j);
        //comboyears.addItem(j);

    }
    System.out.println(years);  

3 个答案:

答案 0 :(得分:5)

您实际上正在打印years,这将打印String的{​​{1}}返回的toString()

您正在多次获取数组,因为ArrayList语句位于print循环内,因此每次迭代它将打印数组(最近添加了元素)。要只打印一次数组,请将for移到循环外。

如果您想在不使用print的情况下打印每个元素,可以尝试以下操作:

[]

或者这个,以避免打印额外的逗号for (Integer i : years) { System.out.print(i + ", "); // This will print a comma at the end }

,

<强>输出:

for (int i = 0; i < years.size() - 1; i++) {
    System.out.print(years.get(i) + ", ");
}
System.out.println(years.get(years.size() - 1));

修改

您还可以在创建1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, ... 的新实例时覆盖toString方法:

ArrayList

因此,您可以按照自己的方式打印数组ArrayList<Integer> years = new ArrayList<Integer>() { @Override public String toString() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < size() - 1; i++) { sb.append(get(i)); sb.append(", "); } sb.append(get(size() - 1)); return sb.toString(); } };

编辑2:

由于您已编辑了我鼓励您不要,因此您可以添加新行字符System.out.println(years);或更改\ n { {1}}:

print

如果您从println覆盖for (int i = 0; i < years.size() - 1; i++) { System.out.println(years.get(i) + ", "); // or concatenate with ", \n" } System.out.println(years.get(years.size() - 1)); 方法,则也可以附加换行符。用

替换`sb.append(&#34;,&#34;)
toString

答案 1 :(得分:4)

如果您将System.out.print保留在for循环中,则可以使用此功能。每次添加元素时都会打印出整个列表。

如果您只想在完成添加后进行打印,请在System.out.print循环结束后移动for

答案 2 :(得分:1)

ArrayList<Integer> years = new ArrayList<Integer>();
int j;

for (j = 1894; j < 2014; j++)
{
    years.add(j);
    System.out.println(years.get(j) + ","); // get elements from 1894 to 2014
}