成功始于日常一步一步的积累!!
近段时间抽时间学习java基础,由于公司采用jdk8,所以学习基础基于jdk8较多
对于list的遍历,有如下方法:
package com.zh.studyjavabase.lists;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* list 的遍历
*/
public class List2 {
public static void main(String[] args) {
List list = getList();
traverse1(list);
System.out.println();
traverse2(list);
System.out.println();
traverse3(list);
}
private static void traverse3(List<String> list) {
System.out.println("forEach遍历:");
long start = System.currentTimeMillis();
int a = 0;
for (String str : list) {
a++;
}
long end = System.currentTimeMillis();
System.out.println(a + "耗时:" + (end - start));
}
private static void traverse2(List<String> list) {
System.out.println("迭代器遍历:");
long start = System.currentTimeMillis();
int a = 0;
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.next();
a++;
}
long end = System.currentTimeMillis();
System.out.println(a + "耗时:" + (end - start));
}
private static void traverse1(List<String> list) {
System.out.println("常用遍历:");
long start = System.currentTimeMillis();
int a = 0;
for (int i = 0, count = list.size(); i < count; i++) {
a++;
}
long end = System.currentTimeMillis();
System.out.println(a + "耗时:" + (end - start));
}
/**
* 默认list
*
* @return
*/
private static List<String> getList() {
List<String> list = new ArrayList<>();
for (int i = 0; i < 1000000; i++) {
list.add("test data id: " + i);
}
return list;
}
}
运行结果:
对于list的遍历,采用的方法根据数据量采取不同的方式进行,
接下来说foreach的原理,首先查看源码
Iterable
根据源码不难看出,有兴趣的可以研究源码进行研究