为了账号安全,请及时绑定邮箱和手机立即绑定

java 的 readonly

标签:
Java

      写过C的都是知道readonly。但是java里面没有。

        最近遇到一个问题,当时用到一个数据库中表,经常需要查询。表的数据量不大。但是记录字段查询用到这个表的数据量超大,几百G有时几T。而且为了提高效率,和后续使用。我在配置文件中定义了一个Map,以匹配字段为key,其他值为value。把整张表缓冲到内存中。这样可以提高查询效率。

        在写的时候当时有个问题。如果这个map在后续使用中数据比小心被改了。那不就跪了吗。此想法一出现,第一个反应就是map数据添加完后定义成readonly模式。 但是Map本身没有readonly方式。

        想到的第一个解决方式是封装map,新类只提供get方法。但是这个方式有弊端,你写的东西别人知道是什么个鬼。第二有没有其他方式,比如jdk本身就提供了方法?当然有!第二种方法是Collections集合类。

        第一种实现方式代码如下:

        class MyMap<K,V> {

            private Map<K,V> map =null;

            public MyMap(Map<K,V> map) {

                this.map = map;

            }

            public V get(K key) {

                return map.get(key);

            }

        }

       第二种实现方式为:

        Map map1 = Collections.unmodifiableMap(map);

        这里只介绍了Map实现方式,当然也有其他的集合类实现方式。对于非集合类,直接final吧。

webp

各个集合类readonly实现方式

        因为习惯了使用java中List,Set,Map等集合类所以大家基本都忽视了Collections类。其实Collections中提供了很多实用方法。建议大家多读读。下面一篇我主要介绍一个这个Collections。



作者:进击的码奴
链接:https://www.jianshu.com/p/2832e22e6ee4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消