优化String + =或Concat?

时间:2013-04-12 20:18:16

标签: java android

我正在写一个可能有1000个数据点的文件。我有所有这些课程,目前正在编写所有数据(数据点是以1s为间隔)。我目前正在做的是在下面写的,而且它很慢。我是否会更好地改变我将字符串/字节写入文件的方式?或者,当应用程序运行时,我会更好地将此信息写入某个文件指针吗?

顺便说一句,所有诸如getAccuracy()之类的内容都是浮点数/整数(所以它也必须转换它们)。

fileStr = "";
        fileStr += "timestamp,Accuracy,Altitude,Latitude,Longitude,GPSSatelliteEntries\r\n";
        for (Iterator<Entry> i = entries.iterator(); i.hasNext(); ) {
            Entry item = i.next();
            long ts = item.getTs();
            DataEntry d = item.getD();
            List<GPSSatelliteEntry> satellites = item.getG();

            // write stuff
            fileStr += ts + ",";
            fileStr += d.getAccuracy() + "," + d.getAltitude() + "," + d.getLatittude() + "," + d.getLongitude() + ",";
            fileStr += "[";
            boolean entered = false;
            for (Iterator<GPSSatelliteEntry> j = satellites.iterator(); j.hasNext(); ) {
                GPSSatelliteEntry item2 = j.next();
                entered = true;
                fileStr += "(" + item2.getAzimuth() + "," + item2.getElevation() + "," + item2.getPrn() + "," + item2.getSnr() + "),";
            }
            // chop off extra ,
            if (entered)
                fileStr = fileStr.substring(0, fileStr.length() - 1);
            fileStr += "]";
            fileStr += "\r\n";
        }

3 个答案:

答案 0 :(得分:4)

每当您努力使用字符串时,请使用StringBuilderStringBuffer来获得更好的效果。

不要忘记Stringimmutable,每次修改String时,都会创建新实例并且会降低性能。

答案 1 :(得分:0)

最有可能string buffer

  

线程安全,可变的字符序列。字符串缓冲区就像一个字符串,但可以修改。

或转到string builder

答案 2 :(得分:0)

StringBuilder stuff = new StringBuilder();
stuff.append("PUT YOUR STRINGS HERE");
stuff.append("PUT YOUR STRINGS HERE");

然后你可以使用'stuff'打印字符串。 把它放在一个循环中并使用计时器迭代大量数据以查看优点,这非常有趣。