继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

java 的 readonly

慕的地10843
关注TA
已关注
手记 1081
粉丝 200
获赞 962

      写过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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP