2014-04-03 53 views
-6

我想按特定顺序打印数组,但我不知道如何,谷歌也没有帮助我。如何格式化ArrayList进行打印?

输出:

[PR001, Slinger 6.20, 135, 380, PR002, Strip 1.07, 93, 470, PR003, Hal, 301, 965, PR004, Zolder, 23, 679] 

预期输出:

PR001 Slinger 6.20 135 380 
PR002 Strip 1.07  93 470 
PR003 Hal   301 965 
PR004 Zolder   23 679 

我从SQL查询得到的ArrayList:

public ArrayList<String> selectAllePrinters() { 
    ArrayList<String> printers = new ArrayList<>(); 
    try { 
     Connection con = SimpleDataSource.getConnection(); 
     PreparedStatement stat = con.prepareStatement("SELECT * FROM printer;"); 
     ResultSet result = stat.executeQuery(); 
     while (result.next()) { 
      printers.add(result.getString("printerid")); 
      printers.add(result.getString("printernaam")); 
      printers.add(result.getString("aantalkleur")); 
      printers.add(result.getString("aantalZwart")); 
     } 
     result.close(); 
     stat.close(); 
     return printers; 
    } catch (SQLException e) { 
     System.out.println(e); 
     return null; 
    } 
} 

我怎样才能做到这一点?提前致谢!

+1

如何显示一些代码? – OldProgrammer

+0

你使用数组还是ArrayList,因为这个输出是用于ArrayList的。而且,代码在哪里? – CMPS

+0

这是什么? – Leo

回答

0

这是几乎你需要使用:-)标签

List<String> l = new ArrayList<String>(Arrays.asList(ss)){; 
    @Override 
    public String toString(){ 
     Iterator<String> it = iterator(); 
     if (! it.hasNext()) 
      return ""; 

     StringBuilder sb = new StringBuilder(); 
     int i = 0; 
     for (;;) { 
      i++; 
      String e = it.next(); 
      sb.append(e); 
      if (! it.hasNext()) 
       return sb.toString(); 
      sb.append('\t'); 
      if (i%4==0){ 
       sb.append("\n"); 
      } 
     } 
    } 
}; 
System.out.println(l); 

为了有两列之间间距完美的你想要什么,你必须遍历所有元素两次找到每列的最大宽度。

但是,如果制表符可以为您(也许你只是想复制并粘贴到电子表格),你可以尝试这种方式。

+0

谢谢!这完美的作品:) – user3190748