62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args)
{
ArrayList<String> str = new ArrayList();
for (int i = 0; i <=20; i++)
{
str.add("String" + i);
}
for (String myStr : str)
{
System.out.println(myStr);
}
for (Iterator i = str.iterator(); i.hasNext();)
{
System.out.println(i.next());
}
}
}
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest
{
public IteratorTest()
{
}
public static void main(String args[])
{
ArrayList str = new ArrayList();
for(int i = 0; i <= 20; i++)
{
str.add((new StringBuilder()).append("String").append(i).toString());
}
String myStr;
for(Iterator i$ = str.iterator(); i$.hasNext(); System.out.println(myStr))
{
myStr = (String)i$.next();
}
for(Iterator i = str.iterator(); i.hasNext(); System.out.println(i.next())) { }
}
}
The enhanced for statement is equivalent to a basic for statement of the form:
for (I #i = Expression.iterator(); #i.hasNext(); ) {
VariableModifiersopt TargetType Identifier =
(TargetType) #i.next();
Statement
}
import java.util.ArrayList;
import java.util.Collections;
import com.google.common.base.Stopwatch;
import java.util.Iterator;
public class Benchmark {
public static void main(final java.lang.String[] args) {
final int SIZE = Integer.MAX_VALUE / 32;
System.out.printf("loop times: %d%n",SIZE);
Stopwatch stopwatch = new Stopwatch().start();
ArrayList<String> list = new ArrayList<>(SIZE);
for (int i = 0; i < SIZE; i++) {
list.add(" ");
}
long millis = stopwatch.elapsedMillis();
System.out.printf("init took: %dms%n",millis);
StringBuilder builder = new StringBuilder(SIZE);
stopwatch = stopwatch.reset().start();
for (int i = 0; i < SIZE; i++) {
builder.append(list.get(i));
}
millis = stopwatch.elapsedMillis();
System.out.printf("for loop took: %dms%n",millis);
builder.delete(0,SIZE);
stopwatch = stopwatch.reset().start();
for (String v : list) {
builder.append(v);
}
millis = stopwatch.elapsedMillis();
System.out.printf("foreach took: %dms%n",millis);
builder.delete(0,SIZE);
stopwatch = stopwatch.reset().start();
for (Iterator<String> iter = list.iterator(); iter.hasNext(); ) {
builder.append(iter.next());
}
millis = stopwatch.elapsedMillis();
System.out.printf("iterator loop took: %dms%n",millis);
}
}
java -Xmx512m -cp .:guava-10.0.jar Benchmark
loop times: 67108863
init took: 1601ms
for loop took: 3688ms
foreach took: 4766ms
iterator loop took: 4546ms
java -server -Xmx512m -cp .:guava-10.0.jar Benchmark
loop times: 67108863
init took: 1129ms
for loop took: 3876ms
foreach took: 3491ms
iterator loop took: 4318ms