java 板


LINE

手上有一个文字档 300mb 档案内容有3个 column中间隔1个空白 每一个column里面资料长度不同 1 2 3 1.1 2 3 类似这样 我想要把这个档案里面的第一栏放到HashMap里面 这样之後比对比较方便 (map.contain(key)) 我把第二栏与第三栏append起来做为Key值 StringBuilder sb = new StringBuilder(); String temp = ""; String key =""; while( (temp = br.readLine()) != null){ String[] items = temp.split(" "); key = sb.append(items[1]).append(items(" ")[2]).toString(); map.put(key, items[0]); sb.delete(0, sb.length()); } 这样写效能奇差无比... 还会爆掉 Q_Q 请问有办法可以改善吗 QQ? -- 不菸不酒,没有朋友 有菸有酒,癌症好友 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.170.251.222
1F:→ awert:一定要读完整个档嘛? 08/26 04:14
2F:→ awert:而且用map要key保证不冲突到才行,不如说说用途? ._. 08/26 04:16
map 里面的 key 有冲突到,会用第二次Put 进去的 value复写吧 (Q_Q? 我不介意他复写 所以我没有去判断 key 值有没有重复 我有两个档案,A.txt B.txt 两个档案格式相近, B.txt 比 A.txt 多一栏 然後B.txt 里面的某一栏要用 A.txt 里面的第一栏(map 里面的 value) 取代 我的想法是 先把 A.txt 第一栏的资料丢进去 Map 里面,让 B.txt 的在取代的时候 能够快速找到value
3F:推 gmoz:後两个column字串会很大吗? 不然不用StringBuilder 08/26 10:08
4F:→ gmoz:而且 append是黏上去 sb没重设 等於每次都把前面旧资料重复黏 08/26 10:11
我在程式里面有加入 sb.delete(0, sb.length()); 只是写在PTT 忘记加上去了Orz ※ 编辑: love112302 来自: 1.170.251.222 (08/26 12:08) 其实不一定要用Map QQ 我只是想问看看有没有比较快的方法 Orz ※ 编辑: love112302 来自: 1.170.251.222 (08/26 12:11)
5F:推 luoqr:用substring会比split快吗? 08/26 12:41
6F:→ luoqr:感觉split参数是regular exp 应该会慢一些... 08/26 12:42
7F:推 luoqr:查了一下 http://0rz.tw/1zQXU StringTokenizer好像也不错? 08/26 12:45
谢谢~ 我晚上会在用 StringTokenizer 试试看 感谢 ※ 编辑: love112302 来自: 1.170.251.222 (08/26 14:04) 看了一下 StringTokenizer 的用法 似乎没办法指定我要取出其中的那一个资料 ? 比方说像阵列一样 [1] 这样? 只能用顺序进行吗QQ? ※ 编辑: love112302 来自: 140.124.60.134 (08/26 20:24)
8F:推 luoqr:顺序...有差吗? 你不是0,1,2都要...@@ 08/26 20:49
阿 我想到了 QQ 我再试试看 ※ 编辑: love112302 来自: 140.124.60.134 (08/26 21:04) 爆掉的地方很奇怪 是在 组合成 KEY 的地方... 我key 的组合方式是 StringBuilder sb = new StringBuilder(); while( Strint temp = br.readLine() != null ){ //中略 key = sb.append(st.nextToken).append(st.nextToken); } ※ 编辑: love112302 来自: 140.124.60.134 (08/26 21:09)
9F:→ luoqr:档案格式有问题? 还是程式写歪了 XD 08/26 21:12
我都把key印出来看 但是都是正确的 QQ.... JVM 也开到 2048 了= = ※ 编辑: love112302 来自: 140.124.60.134 (08/26 21:16)
10F:→ luoqr:要看是跑到第几行爆掉 或是第一行就爆了? 这片段资讯不足 08/26 21:15
刚刚是跑出 GC overhead limit 的错误 实际去看 GC 的执行时间 大概从 两百多万行就开始慢 资料总笔数 一千万行 QQ ※ 编辑: love112302 来自: 140.124.60.134 (08/26 21:34)
11F:推 LaPass:一千万行..... 该改用资料库了吧? 08/26 21:43
恩....正在从头学资料库 Orz ※ 编辑: love112302 来自: 140.124.60.134 (08/26 21:45)
12F:推 eieio:我怀疑 String 没被 GC 清掉,因为 StringBuilder 是同一个 08/27 00:41
13F:→ eieio:要不要试试每次都重新 new 一个 StrinBuilder? 08/27 00:43
这个问题其实我有点困扰 因为我有满多地方需要组合字串 我知道用 + 的方式很慢 但是如果每次都 new 一个 StringBuilder 出来用 比方说: new StringBuilder().appen(1).append(2).toString(); 然後用完就丢掉 跟宣告一个 成员变数(忘记名称 就是宣告在 function 之外的变数) 然後所有要字串组合的地方 都用同一个 StringBuilder 用完之後 sb.delete(0, sb.length()); 哪一个比较省记忆体空间呢QQ? ※ 编辑: love112302 来自: 111.249.194.97 (08/27 01:06)
14F:推 lovdkkkk:String 应该是清不掉, 只要你的 map 还需要它的话 08/27 01:28
15F:→ leonz:这种尺度的资料 应该要写入资料库来处理 08/27 03:46
16F:→ MonyemLi:因为您指出重复的key要覆盖,那将a档案拆成多档去转b档 09/09 19:35
17F:→ MonyemLi:a 1~100000行 + b转出b1, a 100001~200000 + b1转出b2... 09/09 19:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP