为什么在链表中从开始/开始位置删除元素比在数组列表中删除(最后一个)要快?

91zkwejq  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(177)

从数组列表的末尾删除项的时间复杂度为o(1),就像从链表的开头删除项一样。但是当我用java测试链表时,它还是快了一点,我不明白为什么。有人能解释为什么链表在时间复杂度为o(1)的情况下仍然更快吗?
我不认为我的代码能帮你回答我的问题,因为它更多的是关于数据结构的。但这里只是以防万一(不要介意法语,它是用来做作业的):

LinkedList<Integer> LinkL = new LinkedList<Integer>();
        ArrayList<Integer> ArrL = new ArrayList<Integer>();
        int N;
        N = 1000;
        //2.creer le Linked List
        for(int i=0; i<N; i++) {    
        LinkL.add(i);
        }
        //System.out.println(LinkL);  
        //3. et 4.Supprimer les elements de Linked List et afficher le temps
        long debut = System.nanoTime(); 
        for(int i=0; i<N; i++) {
        LinkL.removeFirst();
        }
        long fin = System.nanoTime();
        long tempsExecution = fin - debut;
        System.out.println("1.Suppression des éléments de LinkL avec la méthode \nremoveFirst( ) de LinkedList, avec une durée \nduréeLinkedList = "+tempsExecution+ " nanosecondes");  //-

        //5.Creer Array List
        for(int i=0; i<N; i++) {    
            ArrL.add(i);
            }
        //System.out.println(ArrL);
        //6.Supprimer les elements de Array List et afficher le temps
        debut = System.nanoTime(); 
        for(int i=0; i<N; i++) {
        ArrL.remove(0);
        }
        fin = System.nanoTime();
        tempsExecution = fin - debut;       
        System.out.println("\n2.Suppression des éléments de ArrL avec remove(0) d’un \nArrayList, durée duréeArrayDirect = "+tempsExecution+ " nanosecondes");

        //7. Recreer ArrL
        for(int i=0; i<N; i++) {    
            ArrL.add(i);
            }
        //System.out.println(ArrL);
        //Supprimer les elements de ArrL
        debut = System.nanoTime(); 
        for(int i=N-1; i>=0; i--) {
            ArrL.remove(i);
            }
        fin = System.nanoTime();
        tempsExecution = fin - debut;   
        System.out.println("\n3.Suppression des éléments de ArrL avec remove(i) ciblant \nles derniers éléments d’un ArrayList, avec une durée \nde duréeArrayInverse = "+tempsExecution+ " nanosecondes");

    }

}

提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题