【问题标题】:Array List Output数组列表输出
【发布时间】:2011-12-25 18:20:38
【问题描述】:

我目前正在使用迭代器来输出一个数组列表,但我想在一行上输出它。我认为我最好的选择是使用字符串缓冲区,但有人有更有效的方法吗?

我目前的输出方法是这样的:

Iterator itr = cards.iterator();
while(itr.hasNext()){
    System.out.println(itr.next());
    System.out.println(); 
}

这样做一点也不高效,但我目前只了解它:

 Iterator itr = cards.iterator();
 String str = "";
    while(itr.hasNext()){
        str += (itr.next() + ", ");
    }
    return str;

【问题讨论】:

    标签: java arraylist stringbuffer


    【解决方案1】:

    使用System.out.print() 而不是System.out.println()

    PrintStream

    【讨论】:

      【解决方案2】:

      使用Arrays#toString 将数组转换为String,如下所示:

      final String string = Arrays.toString( myArray );
      System.out.println( string ); 
      

      【讨论】:

      • 所以我收到关于这一行的错误。 final String string = Array.toString(cards);
      【解决方案3】:

      您可以使用 System.out.print() 方法,它不会改变行。

      但我建议使用更有效的方法,例如您建议的 StringBuffer。

      【讨论】:

      • 是否更有效率值得商榷。当然 StringBuffer 在某些情况下更有效(毫无疑问通常更灵活),但恕我直言,情况并非如此。
      【解决方案4】:

      您应该在 stackoverflow 上进行一些搜索。我认为您的问题有一些很好的解决方案。 例如检查这个: Java: StringBuffer & Concatenation

      你应该这样解决问题:

      public String myMethod() {
          StringBuilder sb = new StringBuilder();
      
          Iterator itr = cards.iterator();
          while(itr.hasNext()){
              addToBuffer(sb, itr.next());
          }
          return sb.toString();
      }
      
      private void addToBuffer(StringBuilder sb, String what) {
          sb.append(what).append(' ');  // char is even faster here! ;)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-12
        • 2011-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        • 2022-06-12
        • 2016-01-08
        相关资源
        最近更新 更多