我希望我的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);
答案 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));
方法,则也可以附加换行符。用
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
}