zoukankan      html  css  js  c++  java
  • 从头认识java-14.1 再次对照数组与容器

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

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

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

    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的容器已经具备数组的全部操作,并且还做出了扩展。这个对于编程来说非常重要,减少了编程的复杂程度。

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


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


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

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

    文件夹



  • 相关阅读:
    边工作边刷题:70天一遍leetcode: day 52
    边工作边刷题:70天一遍leetcode: day 53-1
    边工作边刷题:70天一遍leetcode: day 53
    边工作边刷题:70天一遍leetcode: day 54
    边工作边刷题:70天一遍leetcode: day 55
    JavaScript 组件化开发之路(一)
    Promise
    HTML5 API 之 history
    时隔一年,window.scroll
    sublimeLinter-jshint 配置
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7222339.html
Copyright © 2011-2022 走看看