欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

遍历List集合

程序员文章站 2024-03-23 19:26:10
...

先看效率

遍历List集合

遍历List集合

 

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表达式方式

遍历List集合

 

下附具体代码:

 

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("-----------------------------");
		
	}
	
}