[问题] 比HashSet<Long>更好的容器

楼主: Deltaguita (伯利兹)   2015-12-17 16:20:26
想请教一下各位前辈
小弟目前 有上万笔形态为long的资料,从json data 转换为object 时
会依照分类放在HashSet<Long> 里面
会用HashSet的原因是免排序,
但是需要快速查出某个值是不是成员 (使用contain(long id)这个方法
因为资料蛮多的,又把long wrap为Long,占用了不少内存
想请问有没有更节省内存也可以快速判断的方式来存放这些资料呢?
楼主: Deltaguita (伯利兹)   2014-02-05 02:34:00
Guava整包 太肥了,不太适合在android 上跑
作者: Jaymainal (发呆中)   2015-12-17 18:32:00
要省内存可能要将Set分类 而不是全部用同一个存当然还有个偷懒方式丢给DB去处理
作者: LaPass (LaPass)   2015-12-17 19:52:00
丢给db只可能更慢 囧还有你的顾虑是多余的,这种单一变量的东西,即使上万笔,也不会吃多少效能跟内存,大概吃料 8*10000~ 80kb而已
作者: sivid (go back to sleep)   2015-12-17 23:30:00
bloom filter, radix sort, 还有自己手动切partition几万个Long是应该没问题, 有疑虑的话先measure吧
作者: cha122977 (CHA)   2015-12-18 01:12:00
你直接用吧 真的发现慢在这里再说吧没记错的话HashSet找内容是O(1) 才几万笔应该还好
楼主: Deltaguita (伯利兹)   2015-12-18 10:23:00
一个set 约万笔,然后有10 个set 左右 XDHashSet 搜寻真的很快,我不怀疑的目前发现从json 字串转成 object 超花时间 orz
作者: realmeat (真肉)   2015-12-18 12:15:00
json 转成 long 会多花时间?资料简单就写个简易 parser处理就好
作者: LaPass (LaPass)   2015-12-18 12:18:00
json转物件是用哪一套? java的json转换有一堆libary要转物件的话大多是用反射去弄的吧
楼主: Deltaguita (伯利兹)   2015-12-18 15:53:00
目前是Gson, 这些code是在android 跑的在部分手机上来说,真的不太快基本上会让用户感到有点延迟
作者: yyc1217 (somo)   2015-12-18 19:34:00
Martin Fowler最近有篇文章 refactoring document load刚好就是在谈字串转object的问题 好像是要用时再转
作者: LaPass (LaPass)   2015-12-18 19:43:00
Gson还蛮快的阿.... 你是不是转换一次就new一次Gson?
作者: asdhhhman (无名)   2015-12-18 23:29:00
gson是tread safe
楼主: Deltaguita (伯利兹)   2015-12-19 02:19:00
Retrofit 应该不会干这种事XD@yyc1217 马上就需要用到XD 而且是经常性的@asdhhhman 我是一次就拿到好几笔的set
作者: yyc1217 (somo)   2015-12-19 13:54:00
当字串来处理不要转成Long呢?有个library叫Trove4j,有个TLongHashSet可以用primitive value当key
楼主: Deltaguita (伯利兹)   2015-12-20 18:14:00
@yyc1217 我会试试看 谢谢!
作者: marsyang1 (Mars)   2015-12-24 09:21:00
看要不要试试Guava的ImmutableSet

Links booklink

Contact Us: admin [ a t ] ucptt.com