[Hinweis] Java: Geschwindigkeit der Verarbeitung der Liste nach Zweck

Einführung

Eine Sammlung ist eine Box, in der mehrere Elemente wie "ArrayList" und "LinkedList" gespeichert werden können. Dieses Mal werde ich über die folgenden zwei Sammlungen schreiben. Die Antwort ist im Nachschlagewerk geschrieben, aber ich würde es gerne selbst ausprobieren und erleben. Wenn möglich, vergleichen Sie es mit der Sequenz. ・ ArrayListLinkedList

Fazit

Das Hinzufügen ist mit ArrayList etwas schneller. (LinkedList ist auch schnell genug) Die Erfassung ist mit "ArrayList" viel schneller. Das Löschen ist bei weitem die schnellste "LinkedList".

Da es lange dauert, die LinkedList zu bekommen Ist es nicht in Ordnung, "ArrayList" zu verwenden, wenn Sie eine Liste erstellen, die eine Erfassung beinhaltet?

Addiere x Get=> `ArrayList`
Hinzufügen x Löschen=> `LinkedList`
Add x Get x Delete=> `ArrayList`

1, Element hinzufügen

CompareList.java


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

public class CompareList {
    public static void main(String[] args) {
        //Starten Sie die Messung der ArrayList
        long arrayStart = System.currentTimeMillis();
        //Vorbereitung
        List<String> addArrayList = new ArrayList<String>();
        //Zusätzliche Bearbeitung
        for (int num = 0; num<1000000; num++) {
            addArrayList.add("Element");
        }
        //Ende der Messung von arrayList
        long arrayEnd = System.currentTimeMillis();
        System.out.println("arrayList(hinzufügen) : "+(arrayEnd - arrayStart)  + "ms");
        //Zusätzliche Menge bestätigen
        int arraylistSize = addArrayList.size();
        System.out.println(arraylistSize);

        //Starten Sie die Messung von linkedList
        long linkedStart = System.currentTimeMillis();
        //Vorbereitung
        List<String> addLinkedList = new LinkedList<String>();
        //Zusätzliche Bearbeitung
        for (int num = 0; num<1000000; num++) {
            addLinkedList.add("Element");
        }
        //Ende der Messung von linkedList
        long linkedEnd = System.currentTimeMillis();
        System.out.println("linkedList(hinzufügen) : "+(linkedEnd - linkedStart)  + "ms");
        //Zusätzliche Menge bestätigen
        int linkedListSize = addLinkedList.size();
        System.out.println(linkedListSize);
    }
}

Ergebnis.java


        arrayList(hinzufügen) : 35ms
        1000000
        linkedList(hinzufügen) : 259ms
        1000000

2, Element löschen

CompareList.java



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

public class CompareList {
    public static void main(String[] args) {
        //Bereiten Sie eine Liste mit 30000 Elementen vor
        String elem = "elem";
        List<String> array30000elems = new ArrayList<String>();
        List<String> linked30000elems = new LinkedList<String>();
        for(int i = 0; i<300000; i++){
            array30000elems.add(elem);
            linked30000elems.add(elem);
        }

        //Start der ArrayList-Messung
        long arrayStart = System.currentTimeMillis();
        int num = 0;
        //Prozess löschen
        while(array30000elems.size() > 0){
            num += 1;
            array30000elems.remove(elem);
        }
        System.out.println("Verarbeitungszeit: "+num+"Mal");
        long arrayEnd = System.currentTimeMillis();
        System.out.println("arrayList(Löschen) : "+(arrayEnd - arrayStart)  + "ms");

        //Start der LinkedList-Messung
        long linkedStart = System.currentTimeMillis();
        int num2 = 0;
        //Prozess löschen
        while(linked30000elems.size() > 0){
            num2 += 1;
            linked30000elems.remove(elem);
        }
        System.out.println("Verarbeitungszeit: "+num2+"Mal");
        long linkedEnd = System.currentTimeMillis();
        System.out.println("linkedList(Löschen) : "+(linkedEnd - linkedStart)+"ms");
    }
        
}

Ergebnis.java


Verarbeitungszeit:300.000 Mal
        arrayList(Löschen) : 5387ms
Verarbeitungszeit:300.000 Mal
        linkedList(Löschen) : 16ms

3, Element abrufen

CompareList.java


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

public class CompareList {
    public static void main(String[] args) {
        //Bereiten Sie eine Liste mit 30000 Elementen vor
        String elem = "elem";
        List<String> array30000elems = new ArrayList<String>();
        List<String> linked30000elems = new LinkedList<String>();
        for(int i = 0; i<300000; i++){
            array30000elems.add(elem);
            linked30000elems.add(elem);
        }

        //Start der ArrayList-Messung
        int count = 0;
        long arrayStart = System.currentTimeMillis();
        //Erwerbsprozess
        for(int i = 0; i < array30000elems.size(); i++){
            count += 1;
            array30000elems.get(i);
        }
        long arrayEnd = System.currentTimeMillis();
        System.out.println("arrayList(Erhalten) : "+(arrayEnd - arrayStart)  + "ms");
        System.out.println("Verarbeitungszeit: "+count+"Mal");

        //Start der LinkedList-Messung
        int count2 = 0;
        long linkedStart = System.currentTimeMillis();
        //Erwerbsprozess
        for(int i = 0; i < linked30000elems.size(); i++){
            count2 += 1;
            linked30000elems.get(i);
        }
        long linkedEnd = System.currentTimeMillis();
        System.out.println("linkedList(Erhalten) : "+(linkedEnd - linkedStart)  + "ms");
        System.out.println("Verarbeitungszeit: "+count2+"Mal");

    }
        
}

Ergebnis.java


        arrayList(Erhalten) : 7ms
Verarbeitungszeit:300.000 Mal
        linkedList(Erhalten) : 38475ms
Verarbeitungszeit:300.000 Mal

4, Kombination von Hinzufügen und Löschen

CompareList.java


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

public class CompareList {
    public static void main(String[] args) {
        String elem = "elem";

        List<String> samplelist = new ArrayList<String>();
        long start1 = System.currentTimeMillis();
        for(int i =0; i < 30000; i++){
            samplelist.add(elem);
        }
        System.out.println("Nach Zugabe: "+samplelist.size());
        while(samplelist.size() > 0){
            samplelist.remove(elem);
        }
        long end1 = System.currentTimeMillis();
        System.out.println("arrayList(Hinzufügen löschen) : "+(end1 - start1)  + "ms");
        System.out.println("Nach dem Löschen: "+samplelist.size());

        List<String> samplelist2 = new LinkedList<String>();
        long start2 = System.currentTimeMillis();
        for(int i =0; i < 30000; i++){
            samplelist2.add(elem);
        }
        System.out.println("Nach Zugabe: "+samplelist2.size());
        while(samplelist2.size() > 0){
            samplelist2.remove(elem);
        }
        long end2 = System.currentTimeMillis();
        System.out.println("linkedList(Hinzufügen löschen) : "+(end2 - start2)  + "ms");
        System.out.println("Nach dem Löschen: "+samplelist2.size());
    }
        
}

Ergebnis.java


Nach Zugabe: 30000
        arrayList(Hinzufügen löschen) : 78ms
Nach dem Löschen: 0
Nach Zugabe: 30000
        linkedList(Hinzufügen löschen) : 21ms
Nach dem Löschen: 0

5, Kombination aus Hinzufügen, Erfassen und Löschen

CompareList.java


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

public class CompareList {
    public static void main(String[] args) {
        String elem = "elem";

        // arrayList
        List<String> samplelist = new ArrayList<String>();
        long start1 = System.currentTimeMillis();

        //300.000 hinzugefügt
        for(int i =0; i < 300000; i++){
            samplelist.add(elem);
        }
        System.out.println("Nach Zugabe: "+samplelist.size());

        //Holen Sie sich 300.000
        for(int i = 0; i < samplelist.size(); i++){
            samplelist.get(i);
        }
        //Geben Sie die Zeit aus, die für die zusätzliche Erfassung benötigt wird
        long half1 = System.currentTimeMillis();
        System.out.println("arrayList(Zusätzliche Akquisition) : "+(half1 - start1)  + "ms");

        //300.000 löschen
        while(samplelist.size() > 0){
            samplelist.remove(elem);
        }

        //Geben Sie die Zeit aus, die vom Hinzufügen bis zum Löschen benötigt wird
        long end1 = System.currentTimeMillis();
        System.out.println("arrayList(Akquisition hinzufügen löschen) : "+(end1 - start1)  + "ms");
        System.out.println("Nach dem Löschen: "+samplelist.size());


        // linkedList
        List<String> samplelist2 = new LinkedList<String>();
        long start2 = System.currentTimeMillis();

        //300.000 hinzugefügt
        for(int i =0; i < 300000; i++){
            samplelist2.add(elem);
        }
        System.out.println("Nach Zugabe: "+samplelist2.size());

        //Holen Sie sich 300.000
        for(int i = 0; i < samplelist2.size(); i++){
            samplelist2.get(i);
        }

        //Geben Sie die Zeit aus, die für die zusätzliche Erfassung benötigt wird
        long half2 = System.currentTimeMillis();
        System.out.println("linkedList(Zusätzliche Akquisition) : "+(half2 - start2)  + "ms");

        //300.000 löschen
        while(samplelist2.size() > 0){
            samplelist2.remove(elem);
        }

        //Geben Sie die Zeit aus, die vom Hinzufügen bis zum Löschen benötigt wird
        long end2 = System.currentTimeMillis();
        System.out.println("linkedList(Akquisition hinzufügen löschen) : "+(end2 - start2)  + "ms");
        System.out.println("Nach dem Löschen: "+samplelist2.size());
    }
        
}

Ergebnis.java


Nach Zugabe: 300000
        arrayList(Zusätzliche Akquisition) : 34ms
        arrayList(Akquisition hinzufügen löschen) : 5152ms
Nach dem Löschen: 0
Nach Zugabe: 300000
        linkedList(Zusätzliche Akquisition) : 37727ms
        linkedList(Akquisition hinzufügen löschen) : 37745ms
Nach dem Löschen: 0

Recommended Posts

[Hinweis] Java: Geschwindigkeit der Verarbeitung der Liste nach Zweck
[Hinweis] Java: Messen Sie die Geschwindigkeit der Zeichenfolgenverkettung
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 2 ・ Liste ~
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
[Java] Löschen Sie die Elemente von List
Liste der Java-Objekte sortieren
[Java] Ausgabe von DateTimeFormatter durch FormatStyle
[Hinweis] Behandlung von Java-Dezimalstellen
Liste der in Java 9 hinzugefügten Mitglieder
Überraschend tiefe Java-Liste Inversion-Stream-Verarbeitung
Grundlegender Verarbeitungsablauf von Java Stream
Liste der in Java 9 hinzugefügten Typen
Grundkenntnisse in der Java-Entwicklung Schreiben von Notizen
Liste der Download-Ziele für Oracle Java
[Java] Beachten Sie, wie Sie RecyclerView verwenden und die animierte Swipe-Verarbeitung implementieren.
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
[Java] Dynamischer Methodenaufruf durch Reflektion des Aufzählungstyps (Aufzählung)
Java Memorandum (Liste)
Klonen Sie die Java-Liste.
Java-Thread-Verarbeitung
Java-String-Verarbeitung
[Einführung in Java] Liste der Dinge, die am 14. Tag der Programmierung gefangen wurden
[Java] Multithread-Verarbeitung
[Java] Übersicht über Java
[Java] Stream-Verarbeitung
Einfache statistische Analyse des Geldbetrags aus der von der Mercari Java-Entwicklung durchsuchten Liste
Java iterativer Prozess
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 1 ~
Listenverarbeitung zum Verstehen mit Bildern --java8 stream / javaslang-
Rufen Sie eine Liste mit MBean-Informationen für Java-Anwendungen ab
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Zusammenfassung der Revisionen (neue Yuan-Probleme) nach Java-Version
Implementierungsbeispiel eines einfachen LISP-Verarbeitungssystems (Java-Version)
Die Java 8 Stream-Verarbeitung kann bisher weggelassen werden!
Bildverarbeitung: Grundstruktur des vom Programm gelesenen Bildes
Vergleichende Studie der von Java 8 unterstützten TLS Cipher Suite
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)