In diesem unteren Teil des Codes finde ich Entfernen der erste listnode immer und Drucken der ersten Knoten ist effizienter (in Bezug auf die Ausführungszeit) als die Liste intakt und Iterieren über alle Knoten. Ich habe mich gefragt, ob das der Fall ist, weil wenn ich immer den ersten Knoten entferne, ich nur den Startknoten zum nächsten Knoten aktualisieren muss und nur den ersten Knoten holen muss, um den Wert zu drucken. Im Falle der Iteration über die gesamte Liste, indem die Liste intact beibehalten wird, durchläuft die get-Operation die Liste jedesmal mit dem angegebenen Index und ruft den Wert ab. Nun sind meine Fragen: 1) Ist mein Verständnis richtig? 2) Müssen beide Möglichkeiten gleichzeitig ausgeführt werden? 3) Gibt es andere Gründe?LinkedList Update-Leistung in Java
public class Ddbrw {
public List<Integer> ListValidation()
{
List<Integer> lst = new LinkedList<>();
for(int i = 0; i < 20; i++){
lst.add(new Integer(1)); lst.add(new Integer(5));
lst.add(new Integer(9)); lst.add(new Integer(7));
lst.add(new Integer(5)); lst.add(new Integer(61));
lst.add(new Integer(8)); lst.add(new Integer(12));
}
return lst;
}
public static void main(String[] args)
{
Ddbrw obj = new Ddbrw();
Ddbrw obj2 = new Ddbrw();
List<Integer> lst = obj2.ListValidation();
int size = lst.size();
long startTime = System.currentTimeMillis();
for(int i = 0; i < size; i++) {
System.out.print(lst.get(i));
}
long endTime = System.currentTimeMillis();
System.out.println("*************");
System.out.println(endTime-startTime);
System.out.println("*************");
List<Integer> lst2 = obj.ListValidation();
long startTime1 = System.currentTimeMillis();
for(int k = 0; k < lst2.size();) {
System.out.print(lst2.get(k));
lst2.remove(k);
}
long endTime1 = System.currentTimeMillis();
System.out.println("*************");
System.out.println(endTime1-startTime1);
System.out.println("*************");
}
}
'new Integer (1)' nie benutzen, verwenden Sie immer 'Integer.valueOf (1)' . Dies gilt für die meisten Boxed-Primitive. Dies ist auch kein Benchmark für ein Java-Programm. Sie müssen die JVM aufwärmen. –
Besser noch, benutze einfach '1'. Zum Beispiel "lst.add (1);". – shmosel