如何打印没有括号([)和逗号(,)的arraylist值和java中新行的每个值?

时间:2016-06-28 14:35:54

标签: java arraylist

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()方法,我应该覆盖哪种方法来打印像这样?

由于

4 个答案:

答案 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
}
  1. 从当前列表中获取流
  2. 将整数转换为字符串
  3. 使用当前计算机上的行分隔符
  4. 连接String值