首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

中国民生银行笔试题2011(人民大学)解决方案

2012-01-18 
中国民生银行笔试题2011(人民大学)写一个缓存类ExpiringCache:1.缓存有限数量的任意对象,以字符串键值索引

中国民生银行笔试题2011(人民大学)
写一个缓存类ExpiringCache:
1.缓存有限数量的任意对象,以字符串键值索引缓存的对象
2,如果超过缓存对象数量的上限,从缓存中去掉最早缓存的对象,将新缓存的对象加入缓存。


[解决办法]
一个类似多例的方法:
一个map里存放缓存对象,设置一个count值,一个size值。每加一个缓存对象,count++,当count>size,则remove掉第一个缓存对象,然后add进新对象。
这样就行了。
[解决办法]

探讨

字符串键值索引 怎么弄?

[解决办法]
1楼说的不全对。
字符键值索引决定了必须用HashMap或者HashTable存放对象
根据放进缓存的时间顺序清理缓存决定了对象必须依序存放,依序添加,依序删除,所以对象必须同时存在于一个有序队列中,比如可以用ArrayList或Vector实现

所以最终的方案是: 同时维护一个HashTable和Vector,选择用这两个类是因为缓存必然面对多线程同时存取的问题,而这两个类本身已考虑了同步。
[解决办法]
搜索 linkedHashMap lru
[解决办法]
一个双向链表,每次访问一个元素的时候就将该元素移到头部,尾部就是最老的元素,是可以移除的

热点排行