【原创】一个支持极限大小的数组MaxArray,且节省内存
大家好,我写了一个支持极限大小的数组MaxArray,很有用的,希望大家喜欢~~
问:.net类库不是自带了一个数组吗,干嘛还要自己写一个?好在哪里?
答:数组可以在创建后立即访问范围内的任意索引位置,而不需要依次添加,可以跳跃添加,但它的缺点就是创建时立即分配全部内存,比如你连续新建几个int[] arr=new int[int.maxvalue]这样的极限大的数组,会遇到内存溢出异常。
问:要节省内存,可以用ArrayList或List<T>这些,干嘛非得自己写一个?
答:arraylist或者List<T>虽然节省内存,但是它们缺少数组的一个功能:初始化后立即可以随机存取访问任意索引位置,而只能从索引0开始一个一个添加元素
问:这个极限数组的独到之处和使用场景是怎样的呢?
答:我的这个极限数组就是结合这两种类的优点,既可以象数组一样创建后所有索引项立即可用,可以跳跃存取,又可以象arraylist和list<T>一样节省内存,没有实际使用过的索引位置并不实际分配内存,但这个索引确实存在,可以任意存取使用。
它的适用场合就和数组的适用场合是重合的--可惜性能不太好,存取速度大约是数组的5倍到6倍的样子,所以,被排挤到只适合一些极限大的数组的场合,代替数组。
这很有用,在一些别扭的业务场景,或者脑洞大开的奇葩算法中,有了这个可以让以前数组力不从心的设计方案也能实现。
或者你可以反过来想:有了这个东东,以前一些只停留在想象中的业务处理方式、软件的类架构、设计模式、算法,必须要用到数组的随机访问特点,但极限大的数组又做不到的,只好换种别扭的方式实现,现在好了,有了我写的这个极限数组,不用曲里拐弯的实现了,可以平推过去。是设计上、思路上的一个豁然开朗的重要东东。
posted on 2017-06-08 12:33 游客543566tre 阅读(550) 评论(1) 收藏 举报
浙公网安备 33010602011771号