该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-25
想写一个类, 类里面存储一些"名值对","名"就是strings[]里面的String 通过这个类我可以通过strings里面的某个String得到相应的值 (可能是int之类的,这些值是对象构造好动态赋值进去的) 本来可以通过Map实现, 可是这些对象要长期在系统内存中而不释放所以不想使用Map这些比较大的对象,不然消耗太快 另外也希望不要把strings[]当成一个表然后用轮循的方式查找对应值,最好是能一次就索引到的方法 有什么好的办法呢? 谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-25
Groovy 写道 我现在有一些String在一个strings[]里面
想写一个类, 类里面存储一些"名值对","名"就是strings[]里面的String 通过这个类我可以通过strings里面的某个String得到相应的值 (可能是int之类的,这些值是对象构造好动态赋值进去的) 本来可以通过Map实现, 可是这些对象要长期在系统内存中而不释放所以不想使用Map这些比较大的对象,不然消耗太快 另外也希望不要把strings[]当成一个表然后用轮循的方式查找对应值,最好是能一次就索引到的方法 有什么好的办法呢? 谢谢! 呵呵 |
|
返回顶楼 | |
发表时间:2007-06-25
gigix 写道 Groovy 写道 我现在有一些String在一个strings[]里面
想写一个类, 类里面存储一些"名值对","名"就是strings[]里面的String 通过这个类我可以通过strings里面的某个String得到相应的值 (可能是int之类的,这些值是对象构造好动态赋值进去的) 本来可以通过Map实现, 可是这些对象要长期在系统内存中而不释放所以不想使用Map这些比较大的对象,不然消耗太快 另外也希望不要把strings[]当成一个表然后用轮循的方式查找对应值,最好是能一次就索引到的方法 有什么好的办法呢? 谢谢! 呵呵 我看一般的hashmap实现里面会开一个大概有十来项的数组, 而我能用到的可能只有4,5项, 这样不就浪费了一半的空间吗 |
|
返回顶楼 | |
发表时间:2007-06-25
一般来说Map的使用不太有问题吧?
|
|
返回顶楼 | |
发表时间:2007-06-25
我是怕几万个Map放进去会占用太多内存
|
|
返回顶楼 | |
发表时间:2007-06-25
Groovy 写道 我看一般的hashmap实现里面会开一个大概有十来项的数组,
而我能用到的可能只有4,5项, 这样不就浪费了一半的空间吗 sigh 您做什么火箭科学,需要这样节约内存? Groovy 写道 我是怕几万个Map放进去会占用太多内存
不要猜,profile it。 |
|
返回顶楼 | |
发表时间:2007-06-25
new HashMap(5);
|
|
返回顶楼 | |
发表时间:2007-06-25
gigix 写道 Groovy 写道 我看一般的hashmap实现里面会开一个大概有十来项的数组,
而我能用到的可能只有4,5项, 这样不就浪费了一半的空间吗 sigh 您做什么火箭科学,需要这样节约内存? Groovy 写道 我是怕几万个Map放进去会占用太多内存
不要猜,profile it。 就是想看看有没有更好的办法 那我profile下看看 谢谢 |
|
返回顶楼 | |
发表时间:2007-06-25
Groovy 写道 我现在有一些String在一个strings[]里面
想写一个类, 类里面存储一些"名值对","名"就是strings[]里面的String 通过这个类我可以通过strings里面的某个String得到相应的值 (可能是int之类的,这些值是对象构造好动态赋值进去的) 本来可以通过Map实现, 可是这些对象要长期在系统内存中而不释放所以不想使用Map这些比较大的对象,不然消耗太快 另外也希望不要把strings[]当成一个表然后用轮循的方式查找对应值,最好是能一次就索引到的方法 有什么好的办法呢? 谢谢! 你可以仿HashMap写一个简单的符合自己的要求的map public class SimpleHashMap<V> { public Object[][] keyValue= new Object[][2]; public V put(String key, V value) { int h = key.hashCode(); int index = h %keyValue.length; if(keyValue[h][1] = null) { keyValue[h][1] = value; } else { // 如果hashcode有重复的,就要用一个象hashmap的Entry类来保存。 } } public V get(String key) { int h = key.hashCode(); int index = h %keyValue.length; if(keyValue[h][0].equals(key)) { return keyValue[h][1]; } else { // 如果hashcode有重复的,就要从一个象hashmap的Entry类里取。 } } } 我上面的程序有错误,主要是表明一下思路。 你在写自己的类前最好计算一下或测试一下hashmap能不能满足,而不是根据“以为”或“觉得”来做决定。 |
|
返回顶楼 | |
发表时间:2007-06-25
我觉得肯定还是用HashMap来的好,自己写的不一定好过HashMap
|
|
返回顶楼 | |