ArrayList,LinkedList的比较 以及各种遍历方法的比较

public class LoopTest {

	private List<String> arrayList = new ArrayList<String>();
	private List<String> linkedList = new LinkedList<String>();

	@Before
	public void initList() {
		for (int i = 0; i < 100000; i++) {
			arrayList.add(i + "");
			linkedList.add(i + "");
		}
	}

	public void testIterator() {

		System.out.println("====arraylist iterator====");

		Iterator<String> itor = arrayList.iterator();
		long beforeTime = System.currentTimeMillis();
		while (itor.hasNext()) {
			String temp = "";
			temp += itor.next();
		}
		printTime(beforeTime);
	}

	public void testFor() {
		System.out.println("====arraylist for====");

		long beforeTime = System.currentTimeMillis();
		for (int i = 0; i < arrayList.size(); i++) {
			String temp = "";
			temp += arrayList.get(i);
		}
		printTime(beforeTime);
	}

	public void testEnhancedFor() {
		System.out.println("====arraylist enhanced for====");

		long beforeTime = System.currentTimeMillis();
		for (String str : arrayList) {
			String temp = "";
			temp += str;
		}
		printTime(beforeTime);
	}

	public void testLinkedEnhancedFor() {
		System.out.println("====linkedlist enhanced for====");

		long beforeTime = System.currentTimeMillis();
		for (String str : linkedList) {
			String temp = "";
			temp += str;
		}
		printTime(beforeTime);
	}

	public void testLinkedFor() {
		System.out.println("====linkedlist for====");

		long beforeTime = System.currentTimeMillis();
		for (int i = 0; i < linkedList.size(); i++) {
			String temp = "";
			temp += linkedList.get(i);
		}
		printTime(beforeTime);
	}

	public void testLinkedEnhanscedForRemove() {
		System.out.println("====linkedlist enhanced for1====");

		long beforeTime = System.currentTimeMillis();
		for (Iterator<String> itor = linkedList.iterator(); itor.hasNext();) {
			linkedList.remove(itor.next());
		}
		printTime(beforeTime);
	}

	public void testLinkedIterator() {
		System.out.println("====linkedlist iterator====");

		Iterator<String> itor = linkedList.iterator();
		long beforeTime = System.currentTimeMillis();
		while (itor.hasNext()) {
			String temp = "";
			temp += itor.next();
		}
		printTime(beforeTime);
	}

	public void testLinkedIteratorRemove() {
		System.out.println("====linkedlist iterator====");

		Iterator<String> itor = linkedList.iterator();
		long beforeTime = System.currentTimeMillis();
		while (itor.hasNext()) {
			linkedList.remove(itor.next());
		}
		printTime(beforeTime);
	}

	@Test
	public void testResult() {
		testIterator();
		testEnhancedFor();
		testFor();
		testLinkedIterator();
		testLinkedEnhancedFor();
		testLinkedFor();
//		testLinkedEnhanscedForRemove();
//		testLinkedIteratorRemove();
	}

	public void printTime(long beforeTime) {
		System.out.println("it cost "
				+ (System.currentTimeMillis() - beforeTime) + " ms");
	}

}

测试结果:

====arraylist iterator====
it cost 43 ms
====arraylist enhanced for====
it cost 28 ms
====arraylist for====
it cost 34 ms
====linkedlist iterator====
it cost 35 ms
====linkedlist enhanced for====
it cost 17 ms
====linkedlist for====
it cost 49319 ms

增强for循环的速度最快

在LinkedList中,由于其底层由链表实现,在get(int index)方法中,仍然是线性查找,每查找一个元素都要遍历之前的一些指针域,所以Iterator比for快

但是增强for和Iterator中都不能使用remove(Object o)方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值