• 通过编码分别测试ArrayList 和 LinkedList 添加、删除对象时的耗时情况(精确到纳秒),并总结出以上两种集合的数据结构的不同之处。


    /**
    运行结果:
    ---------- 运行 ----------
    ArrayList添加1000个数据用时:568312纳秒
    ArrayList删除1000个数据用时:105195纳秒
    LinkedList添加1000个数据用时:325207纳秒
    LinkedList删除1000个数据用时:290250纳秒
    
    输出完成 (耗时 0 秒) - 正常终止
    分析:
    通过以上结果,我们可以看出LinkedList在对进行添加和删除的操作中,耗费时间少于ArrayList,效率上有明显的优势。
    ArrayList集合底层的数据结构是数组,所以对定向查找速度比较快
    LinkedList集合底层数据结构是链表,链表结构的特点是增删改速度比较快。
    */
    import java.util.*;
    class ListDemo 
    {
    	public static void main(String[] args) 
    	{
    		ArrayList<Integer> al = new ArrayList<Integer>();
    		long startTimeAddal = System.nanoTime();
    		for(int i=0;i<1000;i++)
    		{
    			al.add(i);
    		}
    		long endTimeAddal = System.nanoTime();
    		System.out.println("ArrayList添加1000个数据用时:" + (endTimeAddal - startTimeAddal) + "纳秒");
    		long startTimeRemoveal = System.nanoTime();
    		for(int i=999;i>=0;i--)
    		{
    			al.remove(i);
    		}
    		long endTimeRemoveal = System.nanoTime();
    		System.out.println("ArrayList删除1000个数据用时:" + (endTimeRemoveal - startTimeRemoveal) + "纳秒");
    
    		LinkedList<Integer> ll = new LinkedList<Integer>();
    		long startTimeAddll = System.nanoTime();
    		for(int i=0;i<1000;i++)
    		{
    			ll.add(i);
    		}
    		long endTimeAddll = System.nanoTime();
    		System.out.println("LinkedList添加1000个数据用时:" + (endTimeAddll - startTimeAddll) + "纳秒");
    		long startTimeRemovell = System.nanoTime();
    		for(int i=999;i>=0;i--)
    		{
    			ll.remove(i);
    		}
    		long endTimeRemovell = System.nanoTime();
    		System.out.println("LinkedList删除1000个数据用时:" + (endTimeRemovell - startTimeRemovell) + "纳秒");
    	}
    }
    

  • 相关阅读:
    手机键盘
    关于大数除法
    整数转字符串,字符串转整数
    动态规划习题:数字三角形(01背包)
    关于最长不重复子串的问题
    Ubuntu12.04 下vim的使用(不断更新)
    Ubuntu12.04 如何设置环境变量
    LeetCode--Reverse Linked List II
    Ubuntu12.04 使用svn如何设置代理
    July面试整理系列--(5)
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258494.html
Copyright © 2020-2023  润新知