我有一个Arraylist AList
,它有超过100000个项目。我需要在UI中显示每个数据项。但TeaxtArea.addtext(AList);
以这种方式显示数据
[A,B,C,d ..........]
同样。我需要做的是打印一页。所以我必须通过PrinterJob
。
无论如何我可以删除逗号并立即用换行符替换它。我不能使用appendText
因此附加100000个项目使UI无响应。
PS:我已经从一个线程收集了数据,并将它放在一个ArrayList上。我在ListView上更新它没有问题,但是在TextArea上有这样的问题。我不会在不使用附加
的情况下更改打印格式答案 0 :(得分:0)
您可以预处理列表并使用StringBuilder创建一个新的字符串,如下所示:
List<String> list = new ArrayList<>();
for( int i=0; i < 100000; i++) {
list.add("This is line nr " + i);
}
StringBuilder sb = new StringBuilder();
for( String text: list) {
if( sb.length() > 0) {
sb.append("\n");
}
sb.append(text);
}
textArea.appendText(sb.toString());
设置初始容量也可能有助于收集如此大量的内容。
如果您使用Java 8,您可能还需要查看StringJoiner。
答案 1 :(得分:0)
让我们将aList视为String的ArrayList,
ArrayList<String> aList = new ArrayList<String>();
aList.add("A");
aList.add("B");
aList.add("C");
然后在转到PrinterJob之前使用此代码,
StringBuffer listText = new StringBuffer();
for(String s : aList){
listText.append(s+"\n");
}
System.out.println(listText);
试试这个......