遍历List集合
程序员文章站
2024-03-23 19:26:10
...
先看效率
package com.xx;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 遍历List集合
* @author xxx
*
*/
class ListTravel{
// 定义开始时间、结束时间,便于比较
private static long start_time = 0;
private static long end_time = 0;
// Iterator 迭代器
public static void IteratorTest(List<String> list) {
start_time = System.nanoTime();
Iterator<String> it = list.iterator();
while(it.hasNext()) {
it.next();
}
end_time = System.nanoTime();
System.out.println("IteratorTest: "+ (end_time - start_time));
}
// for-each
public static void foreachTest(List<String> list) {
start_time = System.nanoTime();
for(String tmp : list) {} // tmp 局部变量,集合中元素的一个副本,并不是元素本身
end_time = System.nanoTime();
System.out.println("foreachTest: "+ (end_time - start_time));
}
// normal for 循环
public static void normalTest(List<String> list) {
start_time = System.nanoTime();
for(int i = 0; i < list.size(); i++) {}
end_time = System.nanoTime();
System.out.println("normalTest: "+ (end_time - start_time));
}
// Iterator 在for循环中使用
public static void IteratorForTest(List<String> list) {
start_time = System.nanoTime();
for(Iterator<String> it = list.iterator(); it.hasNext();) {
it.next();
}
end_time = System.nanoTime();
System.out.println("IteratorTest: "+ (end_time - start_time));
}
}
public class ListTravelTest {
public static void main(String[] args) {
// int i = 1000000;// 100万
// List<String> list = new ArrayList<String>(1000000);
// while(i-- > 0) {
// list.add("test" + i);
// }
List<String> list = new ArrayList<String>(1000000);
for(int i = 1000000; i > 0; i--) {
list.add("test" + i);
}
ListTravel.IteratorTest(list);
ListTravel.foreachTest(list);
ListTravel.normalTest(list);
ListTravel.IteratorForTest(list);
}
}
其实,还有Lambda表达式方式
下附具体代码:
package com.xx;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 遍历List集合
* @author xxx
*
*/
public class ListTravelTest2 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("马六");
// normal for循环
System.out.println("normal for循环 遍历List:");
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-----------------------------");
// for-each循环
System.out.println("for-each循环 遍历List:");
for(String tmp : list) {
System.out.println(tmp);
}
System.out.println("-----------------------------");
// lambda表达式1
System.out.println("lambda表达式1 遍历List:");
list.forEach(str -> System.out.println(str));
System.out.println("-----------------------------");
// lambda表达式2
System.out.println("lambda表达式2 遍历List:");
list.forEach(System.out :: println);
System.out.println("-----------------------------");
// Iterator迭代器
System.out.println("Iterator迭代器 遍历List");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
System.out.println("-----------------------------");
// for循环下Iterator迭代器
System.out.println("for循环下Iterator迭代器 遍历List");
for(Iterator<String> ite = list.iterator(); ite.hasNext();) {
String st = ite.next();
System.out.println(st);
}
System.out.println("-----------------------------");
}
}
推荐阅读
-
遍历List集合
-
list 与 josn互转
-
list, dict, tuple,rowproxy 转dataframe,pandas的df与spark的df互转
-
简单题--589. N叉树的前序遍历
-
JavaScript 中的12种循环遍历方法
-
python string与list,tuple,dict相互转换
-
为什么元组Tuple是不可变的,列表List是可变的
-
List排除、去重与equals和hashCode方法重写
-
Java泛型07 : Java自带的泛型Collection、List、Map、Set以及工具类Arrays和Collections
-
Swift学习笔记第三篇(字符串,数组,集合,字典)