public class extendsArraylist {
public static void main (String [] args) {
ArrayList<Integer> e = new ArrayList<Integer>();
e.add(1);
e.add(2);
e.add(3);
e.add(4);
e.add(5);
e.add(6);
e.add(7);
System.out.println(e);
}
}
如果您看到上面的代码,它将打印[1,2,3,4,5,6,7],而我希望它打印新行中的每个元素,不带括号和逗号,如1 2 3 4 5 6 7
使用相同的System.out.println()方法,我应该覆盖哪种方法来打印像这样?
由于
答案 0 :(得分:2)
我正在写这个答案,因为这个问题可能会被一些人误解:
当方法System.out.println(...)
中给出Object参数时,将调用对象自己的toString()
方法。
因此,如果您要使用与之相同的通话但结果不同,则必须使用重写ArrayList
方法实施自己的toString()
:
class MyArrayList<T> extends ArrayList<T>
{
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
for (T t : this)
{
sb.append(t);
sb.append(' ');
}
return sb.toString();
}
}
答案 1 :(得分:1)
您可以使用for
循环:
private void printList(ArrayList<Integer> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println(String.valueOf(list.get(i));
}
}
评论后编辑:您还可以使用此方法创建字符串并打印出来:
private String getStringToPrint(ArrayList<Integer> list) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
builder.append(String.valueOf(list.get(i));
if (i == list.size() -1) {
builder.append("\n");
} else {
builder.append(" ");
}
return builder.toString();
}
然后使用System.out.println()
答案 2 :(得分:0)
感谢@ParkerHalo
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class extendsArraylist<T> extends ArrayList<T>{
public static void main (String [] args)
{
extendsArraylist<Integer> e = new extendsArraylist<Integer>();
e.add(1);
e.add(2);
e.add(3);
e.add(4);
e.add(5);
e.add(6);
e.add(7);
System.out.println(e);
}
public String toString()
{
String result = "";
for (T i : this)
{
result = result + i.toString() + " " + '\n';
}
return result;
}
}
这就是我想要实现的目标。
答案 3 :(得分:0)
对于Java 8解决方案,toString
的子类的ArrayList
方法可以是
public String toString() {
return this.stream() // 1
.map(i -> i.toString()) // 2
.collect(Collectors.joining(System.lineSeparator())); // 3
}