论坛首页 Java企业应用论坛

10万个字符串相加会发生什么??

浏览 19338 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-02   最后修改:2010-02-02
传arry不传iterator吧.
0 请登录后投票
   发表时间:2010-02-02  
到底这个需求该如何解决呢?
用什么数据结构来存放才是王道?
楼主的解决方法效率、性能提升多少?
0 请登录后投票
   发表时间:2010-02-02  
自己写个缓存吧,数量过大,真大到JVM分配的内存都不够用了,一样OutOfMemory
0 请登录后投票
   发表时间:2010-02-03  
很恐怖的代码,像我们这样的小服务器,碰到这样的代码,也只有死的份了。觉得开始设计的就有问题,就不应该这么相加。
0 请登录后投票
   发表时间:2010-02-03  
我很佩服楼主 不用StringBuilder
0 请登录后投票
   发表时间:2010-02-08  
在数据库拼接查询串等地方可以用StringBuffer,应该就不会遇到这样的问题了
0 请登录后投票
   发表时间:2010-02-08  
10W个简单的字符串,OOM的几率很小吧,得有多大的并发a
StringBuffer比较可靠
0 请登录后投票
   发表时间:2010-02-10  
StringBuilder
0 请登录后投票
   发表时间:2010-02-10  
楼主,明显对Java代码的优化没有什么概念。
0 请登录后投票
   发表时间:2010-02-14  
kevintse 写道
binlaniua 写道
其实
String a = "1" + ..... + ...



StringBuffer sbuff = new StringBuffer();
sbuff.append(..).append(..)

是一样的..


String a = "1";
a += "b";
就不一样了。。



Oh, my god...不知道你是在哪里看到的~
"1" + ..... + ...居然跟StringBuffer.append()是一样的?
String.+ 与StringBuffer.append()相比,性能是很低效的。String.+每加一次就生成一个临时对象,StringBuffer.append()则是append过程中不断重新分配内存(次数要远远低于String.+)。
拼接大量字符串的时候,用StringBuffer.append()的性能远远高于String.+,只是相对耗费比较多的内存。
你可以测试一下,或者看一下String和StringBuffer的源代码。

binlaniua说的是对的,你可以写代码试试

String a = "1" + ..... + ...



StringBuffer sbuff = new StringBuffer();
sbuff.append(..).append(..)
把编译得到的class文件用java -p反编译一次,观察得到的字节码你就知道啦

 

2 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics