性能考虑,数组是首选

**一、分析 **
数组在实际的系统开发中使用的越来越少,我们通常只有在阅读一些开源项目时才会看到它们的身影,在Java中它确实没有List、Set、Map这些集合使用起来方便,但是在基本类型处理方面,数组还是占优势的,而且集合的底层也是通过数组实现。

**二、场景 **
比如对一个数据集求和的计算:

//对数组求和 
public static int sum(int[] datas){ 
    int sum = 0; 
    for(int i = 0; I < datas.length; I++){ 
        sum += datas[i]; 
    } 
    return sum; 
}

对于一个int类型的数组求和,取出所有元素的数组元素并想家,此算法是基本类型则使用数组效率最高。

//对列表求和计算 
public static int sum(List<Integer> datas){ 
    int sum = 0; 
    for(int i = 0; i < datas.size(); i++){ 
        sum += datas.get(i); 
    } 
    return sum; 
} 

注意在相加求和的运算中,做了一个拆箱动作,这对于性能濒于临界的系统是比较危险的。

在初始化List的时候,要进行装箱动作,虽然有整形池在,但不在整形池范围都会产生一个新的Integer对象。

众所周知,基本类型是在栈内存操作的,而对象则是在堆内存中操作的。栈内存的特点是速度快,容量小;堆内存的特点是速度慢,容量大(从性能上讲,基本类型的处理占优势)。

**三、建议 **
性能要求较高的场景中,使用数组替代集合。在实际测试中发现:对于基本类型进行求和计算时,数组的效率是集合的10倍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,471评论 11 349
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,148评论 0 11
  • 现在每天6:15左右起床,还是不够早呢。因为7点就得出门上班,这期间也就剩下45分钟,穿衣洗脸刷牙吃早饭,回占用掉...
    月羊不是羊阅读 1,261评论 0 1
  • 你总是很容易就下结论 从而作出规划 我总是犹豫不决 不肯动作 昨晚做了个超真实的梦 你找了个漂亮大方的姑娘 告诉我...
    zhangjiaof阅读 1,053评论 0 0