Enhanced for loop startet teilweise durch List

7

Ich bin ein Anfänger in Java und ich hatte diese Zweifel. Ist es möglich, die Enhanced for-Schleife in Java in einer ArrayList zu verwenden, aber am angegebenen Punkt statt mit ArrayList [0] zu beginnen.

%Vor%

Kann ich die erweiterte for-Schleife verwenden und von calc [2] iterieren anstatt von calc [0] ?? Wenn möglich, wie kann ich das tun? In meinem speziellen Fall wäre die Verwendung einer erweiterten for-Schleife besser als eine normale for-Schleife.

    
user2358330 25.06.2013, 16:02
quelle

5 Antworten

16

Der beste Weg in Java wäre so:

%Vor%

subList ist eine effiziente Ansicht der ursprünglichen Liste, also ist es genau das, was Sie brauchen.

AKTUALISIEREN

OK, motiviert durch Mikeras Kommentare, habe ich es auf jmh bewertet. Dies ist der benchmarked Code:

%Vor%

Und das sind die Ergebnisse:

%Vor%

Schlussfolgerungen:

  1. erweitert für in der Hauptliste ist so schnell wie eine indizierte Iteration, nachdem die Initialisierungskosten überschritten wurden;

  2. Die Traversierung der Unterliste ist etwas langsamer als die der Hauptliste, und die Iteration ist etwas langsamer als die indizierte Traversierung;

  3. alle Unterschiede sind praktisch vernachlässigbar.

Marko Topolnik 25.06.2013, 16:06
quelle
4

Sie stecken hier mit einer traditionellen Schleife fest ...

%Vor%

Nun, es sei denn, Sie sind bereit, ein temporäres subList nur für die Verwendung einer erweiterten for-Schleife, was gut ist, da Unterlisten Ansichten der ursprünglichen Liste sind und kein neues Listenobjekt erstellen:

%Vor%     
Óscar López 25.06.2013 16:05
quelle
3
%Vor%     
haraldK 25.06.2013 16:05
quelle
1

Sie können die Unterliste wie folgt durchlaufen:

%Vor%     
hd1 25.06.2013 16:07
quelle
0

Es sollte beachtet werden, dass die erweiterte for-Schleife für ArrayList weniger effizient als die Standardindizierung ist. Dies liegt daran, dass wir ein Iterator -Objekt erstellen und hasNext und next in jedem Schritt der Schleife aufrufen müssen, was unnötigen Overhead verursacht.

Aus diesem Grund würde ich die Indexierung auf traditionelle Weise empfehlen, anstatt den sublist -Ansatz zu verwenden.

    
selig 25.06.2013 16:34
quelle

Tags und Links