一、创建集合并添加元素(从末尾位置添加)

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
    /***
     * ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
       *   用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。
          
     * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
     *  LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
     */

    public static void main(String[] args) {
        List <Integer> alist = new ArrayList<Integer>();
        List<Integer> llist = new LinkedList<Integer>();
        runDuration(alist,"ArrayList");
        runDuration(llist,"LinkedList");
    }
        public static void runDuration(List<Integer> list,String listType){
            System.out.println("\n duration方法的开始,用的集合是:"+listType);
            //记录开始时当前时间
            long startTime = System.currentTimeMillis();
            for(int i = 0;i<100000;i++) {
                list.add(i);
            }
            //记录结束时当前时间
            long endTime = System.currentTimeMillis();
            //持续时间
            long duration = endTime-startTime;
            System.out.println("集合"+listType+"用时为"+duration+"毫秒");
        }
    
        }
    

 

二、计算集合大小

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
    /***
     * ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
       *   用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。
          
     * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
     *  LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
     */

    public static void main(String[] args) {
        List <Integer> alist = new ArrayList<Integer>();
        List<Integer> llist = new LinkedList<Integer>();
        runDuration(alist,"ArrayList");
        runDuration(llist,"LinkedList");
    }
        public static void runDuration(List<Integer> list,String listType){
            System.out.println("\n duration方法的开始,用的集合是:"+listType);
            for(int i = 0;i<100000;i++) {
                list.add(i);
            }
            //获取集合大小
            int size = list.size();
            //添加元素
            int elementToAdd = size + 10000;
            
            System.out.println("第一次添加的元素个数为:"+elementToAdd);

            //记录开始时当前时间
            long startTime = System.currentTimeMillis();
            for(int i = size;i<elementToAdd;i++) {
                list.add(i);
            }
            System.out.println("第一次添加的元素个数为:"+list.size());
            //记录结束时当前时间
            long endTime = System.currentTimeMillis();
            //持续时间
            long duration = endTime-startTime;
            System.out.println("集合"+listType+"用时为"+duration+"毫秒");
        }
        }

从运行结果看,LinkedLst比ArrayList运行耗时更少,效率更高。

 

三、在指定索引位上加元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
    /***
     * ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
       *   用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。
          
     * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
     *  LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
     */

    public static void main(String[] args) {
        List <Integer> alist = new ArrayList<Integer>();
        List<Integer> llist = new LinkedList<Integer>();
        runDuration(alist,"ArrayList");
        runDuration(llist,"LinkedList");
    }
        public static void runDuration(List<Integer> list,String listType){
            System.out.println("\n duration方法的开始,用的集合是:"+listType);
            for(int i = 0;i<100000;i++) {
                list.add(i);
            }
            //获取集合大小
            int size = list.size();
            //添加元素
            int elementToAdd = size + 10000;
            
            System.out.println("第一次添加的元素个数为:"+elementToAdd);

            //记录开始时当前时间
            long startTime = System.currentTimeMillis();
            for(int i = size;i<elementToAdd;i++) {
            //    list.add(i);
                list.add(0, i);
            }
            System.out.println("第一次添加的元素个数为:"+list.size());
            //记录结束时当前时间
            long endTime = System.currentTimeMillis();
            //持续时间
            long duration = endTime-startTime;
            System.out.println("集合"+listType+"用时为"+duration+"毫秒");
        }
        }

从运行结果看,在指定位置插入值时,LinkedLst比ArrayList运行耗时要少,效率更高。

 

 

四、从尾部删减元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
    /***
     * ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
       *   用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。
          
     * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
     *  LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
     */

    public static void main(String[] args) {
        List <Integer> alist = new ArrayList<Integer>();
        List<Integer> llist = new LinkedList<Integer>();
        runDuration(alist,"ArrayList");
        runDuration(llist,"LinkedList");
    }
        public static void runDuration(List<Integer> list,String listType){
            System.out.println("\n duration方法的开始,用的集合是:"+listType);
            for(int i = 0;i<100000;i++) {
                list.add(i);
            }
            //获取集合大小
            int size = list.size();
            //添加元素
            int elementToAdd = size + 10000;
            
            System.out.println("第一次添加的元素个数为:"+elementToAdd);

            //记录开始时当前时间
            long startTime = System.currentTimeMillis();
            /*for(int i = size;i<elementToAdd;i++) {
            //    list.add(i);
                list.add(0, i);
            }*/
            
            for(int i = 90000;i<92000;i++) {
                    list.remove(i);
                }
            System.out.println("第一次添加的元素个数为:"+list.size());
            //记录结束时当前时间
            long endTime = System.currentTimeMillis();
            //持续时间
            long duration = endTime-startTime;
            System.out.println("集合"+listType+"用时为"+duration+"毫秒");
        }
        }

从运行结果看,从尾部开始删减元素,ArrayList比LinkedLst运行耗时要少,效率更高。

五、从首部开始删减元素

package ZangJie7;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
    /***
     * ArrayList 底层是数据实现的,是连续的空间{0,1,2,3,4,5,6},如果从最后的位置增除的话,用ArrayList比较快,
       *   用ArrayList增删元素时,会造成原素位空缺,其它已经存在的元素会向前或者向后移动,影响程序效率。
          
     * LinkedList 如果从最开始的位置删除的话,用LinkedList 比较快
     *  LinkedList是使用索引存储元素,采用的是手拉手的形式,增删时不会带来元素的移动,所以效率比ArrayList要快。
     */

    public static void main(String[] args) {
        List <Integer> alist = new ArrayList<Integer>();
        List<Integer> llist = new LinkedList<Integer>();
        runDuration(alist,"ArrayList");
        runDuration(llist,"LinkedList");
    }
        public static void runDuration(List<Integer> list,String listType){
            System.out.println("\n duration方法的开始,用的集合是:"+listType);
            for(int i = 0;i<100000;i++) {
                list.add(i);
            }
            //获取集合大小
            int size = list.size();
            //添加元素
            int elementToAdd = size + 10000;
            
            System.out.println("第一次添加的元素个数为:"+elementToAdd);

            //记录开始时当前时间
            long startTime = System.currentTimeMillis();
            //添加元素
            /*for(int i = size;i<elementToAdd;i++) {
            //    list.add(i);
                list.add(0, i);
            }*/
            
            /*//从尾部开始删减元素添加元素
            for(int i = 90000;i<92000;i++) {
                    list.remove(i);
                }*/
            
            //从首部开始删减元素添加元素
            for(int i = 0;i<100;i++) {
                    list.remove(i);
                }
            System.out.println("第一次添加的元素个数为:"+list.size());
            //记录结束时当前时间
            long endTime = System.currentTimeMillis();
            //持续时间
            long duration = endTime-startTime;
            System.out.println("集合"+listType+"用时为"+duration+"毫秒");
        }
        }

从运行结果看,从首部开始删减原始,LinkedLst比ArrayList运行耗时要少,效率更高。

 

 

posted on 2019-04-02 10:26  时光以北暮南城  阅读(260)  评论(0)    收藏  举报