论坛首页 Java企业应用论坛

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

浏览 19336 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-01  
如果相加频率很频繁的话,挺可怕的,算一下,你这10万字符串占多少空间。
0 请登录后投票
   发表时间:2010-02-01  
mazzystar 写道
蜗牛创业网 写道
append太多了会溢出。
我的意思是 buffer append太多,在很久以前这件事在我面前发生了

能说说最后怎么解决的吗?


应该是已经超出JVM的内存了吧~
0 请登录后投票
   发表时间:2010-02-01  
楼主不错啊,能发现这问题,呵呵。
0 请登录后投票
   发表时间:2010-02-01  
我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。
0 请登录后投票
   发表时间:2010-02-02  
蜗牛创业网 写道
mazzystar 写道
蜗牛创业网 写道
append太多了会溢出。
我的意思是 buffer append太多,在很久以前这件事在我面前发生了

能说说最后怎么解决的吗?


ByteArrayOutputStream

正道,以前处理一个10m的文件,string半个小时都处理不完,流瞬间就好了。
0 请登录后投票
   发表时间:2010-02-02   最后修改:2010-02-02
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的源代码。
0 请登录后投票
   发表时间:2010-02-02  
Scenery 写道
我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。




感觉这蛮好的
0 请登录后投票
   发表时间:2010-02-02  
kasirin 写道
Scenery 写道
我觉得是设计思想的问题,不要说上传十万个字符串,就是上传一百万个字符串,就现在而言也不是没有,问题不是在于把String改成StringBuilder就OK了,问题在于怎么往上传,如果把这些字符串往数据库里这么一存,肯定不是一个好注意,无论是上传还是下载都会花费大量的时间,更别提对这些内容进行修改。所以我认为大于五千个字符串的不如保存成文件,在数据库里只要记一下这个文件的路径就可以了。




感觉这蛮好的

这个显然自以为是了,从楼主透露出的一些信息能看出那个文件里保存的是电话号码,他需要把这些电话号码保存到数据库里才能进行查询、统计,或者避免重复等操作,如果四个人上传了十个这样的文件,文件里的电话号码可能重复,现在需要统计一下一共有多少电话号码,数据库里select count(*)...,文件里就麻烦了呀。如果他需要给这些号码发短信,并记录发送次数,这个发送次数难道也记录在文件里吗?

0 请登录后投票
   发表时间:2010-02-02  
ansjsun 写道
听哥一句用数组吧..先弄个足够大的数组...一行一行放.弄个数字记录.到了数组哪行了.如果不够数组扩容..至于那个需求..list和map都不行..容易内存溢出

你以为ArrayList会溢出的话,数组就不溢出了??
0 请登录后投票
   发表时间:2010-02-02  
zhangdp_neu 写道
如果相加频率很频繁的话,挺可怕的,算一下,你这10万字符串占多少空间。

一个字符串20个字符,40个byte,10万也就4M而已
0 请登录后投票
论坛首页 Java企业应用版

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