Java中数组遍历的五种方法

  • 遍历:Stream遍历,循环遍历

在这里插入图片描述

//TODO 为Java提供的一种书签

import java.util.Vector;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Random;

/**
 * 数组多种遍历偶数方法
 * 
 * @author 轩
 *
 */
public class Main {
	public static void main(String args[]) {
		long begin = 0;
		Random rd = new Random();
		System.out.print("遍历原数组: ");
		Vector<Integer> arr = new Vector<Integer>();
		for (int i = 0; i < 10; i++) {// 插入元素
			int a = (rd.nextInt() % 100) + 100;
			arr.add((Integer) (a));
			System.out.print(a + " ");
		}
		System.out.println("\n");

		/****************************************************************************/
		System.out.println("第一种:Enumeration接口实现");
		begin = System.currentTimeMillis();
		Enumeration<Integer> head;
		head = arr.elements();// 类似指向数组的头-1;
		// Enumeration接口提供了遍历Vector和HashTable类型集合元素的功能,类似迭代器Iterator
		while (head.hasMoreElements()) {// hasMoreElements();方法判断是否还有元素
			if (head.nextElement() % 2 == 0)
				System.out.print(head.nextElement() + " ");// nextElement()返回下一个
		} // while
		System.out.println("\n 运行时间:" + (System.currentTimeMillis() / 1000f - begin) + "\n");
		/****************************************************************************/

		System.out.println("第二种:foreach“只能读取数据");
		for (int m : arr) {
			if (m % 2 == 0)
				System.out.print(m + " ");
		}
		System.out.println("\n 运行时间:" + (System.currentTimeMillis() / 1000f - begin) + "\n");

		/****************************************************************************/

		System.out.println("第三种:for循环");
		for (int i = 0; i < arr.size(); i++) {
			if (arr.get(i) % 2 == 0)
				System.out.print(arr.get(i) + " ");
		}
		System.out.println("\n 运行时间:" + (System.currentTimeMillis() / 1000f - begin) + "\n");

		/****************************************************************************/

		System.out.println("第四种:iterator迭代遍历");
		Iterator<Integer> head_Iterator = arr.iterator();
		while (head_Iterator.hasNext()) {
			int a = head_Iterator.next();
			if (a % 2 == 0)
				System.out.print(a + " ");
		}
		System.out.println("\n 运行时间:" + (System.currentTimeMillis() / 1000f - begin) + "\n");

		/****************************************************************************/

		System.out.println("第五种:Consumer,函数式接口lambda");
		arr.stream().filter(a -> a % 2 == 0)// 过滤
				.forEach(a -> System.out.print(a + " "));// 遍历
		System.out.println("\n 运行时间:" + (System.currentTimeMillis() - begin) / 1000f * 1000 + "\n");
		/****************************************************************************/
	}// main
}

猜你喜欢

转载自blog.csdn.net/qq_44009311/article/details/100582304