这一章节我们再次深入的对照数组与容器。

数组与容器主要集中在三个方面:效率、类型、基础类型。

我们能够从三方面做出对照。

1.效率

这里的下来是指add和get 的速度

以下以add为例:

package com.ray.ch13;

import java.util.ArrayList;

public class Test {
public static void main(String[] args) {
Integer zero = new Integer(0);
ArrayList<Integer> list = new ArrayList<Integer>();
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
list.add(zero);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
Integer[] integers = new Integer[1000000];
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
integers[i] = zero;
}
endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
System.out.println("----------------");
Integer[] integers2 = new Integer[1000000];
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
integers2[i] = zero;
}
endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
ArrayList<Integer> list2 = new ArrayList<Integer>();
startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
list2.add(zero);
}
endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
}
}

输出:

26
2
----------------
2
29

从结果能够看见,明显是数组的快非常多,可是有一点须要注意的是,我们上面的代码要排除两点,一是放入的对象要先建立好。二是容器或者数组也要先建立好,单纯的对照add的速度,不然会有偏差。笔者在这里饶了20几分钟才绕出来。才得到最后想要的结果。

效率是数组胜出,可是数组牺牲了扩容的能力。容器尽管败了,可是它得到的是扩容的能力,就是由于须要这个扩容能力,才牺牲了效率。

可是,对于普通的应用。仅仅有几十个或者几百个对象的操作,推荐容器,由于这里面的效率损失全然能够忽略不计。

2.类型

在前面我们已经举过相关的样例,数组是类型安全的,容器有可能类型不安全。

样例:

package com.ray.ch13;

import java.util.ArrayList;

public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(1);
list.add("1");
Integer[] integers = new Integer[10];
integers[0] = 0;
// integers[1]="1";//error
}
}

3.基础类型

数组支持基础类型,而容器不支持。

样例:

package com.ray.ch13;

public class Test {
public static void main(String[] args) {
// ArrayList<int> list = new ArrayList();//error
int[] arr = new int[10];
}
}

4.总的来说

笔者还是推荐使用容器。由于java的容器已经具备数组的全部操作,并且还做出了扩展。这个对于编程来说非常重要,减少了编程的复杂程度。

当然,假设是上面的实验性的东西。另当别论。

总结:我们上面从三方面对照了数组和容器。以及举例说明。

这一章节就到这里,谢谢。

-----------------------------------

文件夹

最新文章

  1. thinkphp笔记
  2. java-cef系列视频第四集:自定义协议
  3. Segment fault及LINUX core dump详解 (zz)
  4. [Js/Jquery]天气接口简单使用
  5. 开源src镜像
  6. android自定义View-继承
  7. 使用hql动态创建对象问题
  8. linux 硬盘满了如何处理
  9. vue 前端框架 目录
  10. 洛谷.1110.[ZJOI2007]报表统计(Splay Heap)
  11. P5241 序列(滚动数组+前缀和优化dp)
  12. process.tar.gz
  13. mysql 存储过程用程序调的问题
  14. forward与redirect的区别
  15. C++ - explicit和volatile/const的内容
  16. windows svn post-commit 报错解决 error resolving case
  17. ElasticSearch使用代码
  18. goole进不去?
  19. Redis高可用及分片集群
  20. 【框架】Spring和dubbox

热门文章

  1. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
  2. [TJOI2017] 城市 (树的直径,贪心)
  3. bzoj 1069 凸包+旋转卡壳
  4. Filter里面实现未登录跳转,已登录权限判断
  5. es6总结(三)--数组
  6. 标准C程序设计七---107
  7. 标准C程序设计七---57
  8. 電池的標稱電壓 與 power consumption 量測
  9. STL之set的用法
  10. Day 20 迭代器、生成器