Java数据类型问题

时间:2010-02-01 21:58:05

标签: java types

我正在使用java中的matrix。 (另一个故事:))

我想读取CSV文件并将其存储在变量中。我将操纵值然后再将其存储在CSV文件中。我使用STRING作为数据类型。但是如果CSV文件有500列。它会杀死我的程序速度:(。我认为这不是很好的数据类型。我可以使用哪种数据类型来临时存储LONG TEXT?

如果我的问题不明确,请提出问题。我会解释。 感谢

P.S:我正在读一行并将其存储在像这样的变量中

String str;

str += read line by line from CSV;

这是循环

String reduceM="";

 for(int kk=0;kk<W2.getRowDimension();kk++){
     for(int jj=0;jj<W2.getColumnDimension();jj++){
         reduceM += Double.toString(reduceMatrix[kk][jj]);
     }
     System.out.println("\r\n");
 }

4 个答案:

答案 0 :(得分:6)

使用StringBuilder(如果您使用的是Java 1.5或更早版本,则使用StringBuffer):

StringBuilder builder = new StringBuilder();
for (int kk = 0; kk<W2.getRowDimension(); kk++) {
    for(int jj = 0; jj < W2.getColumnDimension(); jj++) {
        builder.append(reduceMatrix[kk][jj]);
    }
}

这将避免它为两个循环的每次迭代创建一个新的(并且越来越长)字符串。

但是,此代码中没有逗号或换行符 - 我怀疑您实际上想要这样的内容:

StringBuilder builder = new StringBuilder();
for (int kk = 0; kk < W2.getRowDimension(); kk++) {
    for (int jj = 0; jj < W2.getColumnDimension(); jj++) {
        builder.append(reduceMatrix[kk][jj])
               .append(",");
    }
    builder.append("\n"); // Or whatever line terminator you want
}

请注意,这会在每行的末尾留下额外的逗号 - 如果您想了解如何删除它,请告诉我。

请参阅this article了解为什么这可以大大改善您的运行时间。 (请注意,这是一篇旧文章,谈论StringBuffer而不是StringBuilder - 后者只是前者的非同步版本。)

答案 1 :(得分:0)

使用'StringBuffer'类进行连接。效率更高。

请看一下这篇文章的解释:here

编辑 - 抱歉,我没有看到这已经回答了

答案 2 :(得分:0)

首选StringBuilder,与字符串连接(+)相比,性能有很大差异。

答案 3 :(得分:0)

除了双向飞碟的好回答;如果没有必要,请不要写入system.out,或者如果要写入控制台使用缓冲区或在循环结束时写入。它会使您的程序变得很麻烦,因为每次在循环中遇到System.out流时都会打开写入刷新并关闭。