0

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

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

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;
4

4 回答 4

2

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

PrintStream

于 2011-11-09T23:20:53.657 回答
1

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

final String string = Arrays.toString( myArray );
System.out.println( string ); 
于 2011-11-09T23:22:38.003 回答
0

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

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

于 2011-11-09T23:23:59.843 回答
0

您应该在 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! ;)
}
于 2011-11-10T00:24:59.207 回答