JAVA集合遍历之List

ArrayList

(1)普通for循环,对于ArrayList速度比较快
import java.util.ArrayList;
import java.util.List;

public class List_ArrayList {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}
}

(2)超级for

import java.util.ArrayList;
import java.util.List;

public class List_ArrayList {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		for (String v : list) {
			System.out.println(v);
		}
	}
}

(3)迭代器iterator

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class List_ArrayList {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		Iterator<String> iterator=list.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
	}
}

三者遍历速度比较

数据量for循环超级for迭代器iterator
1万0ms2ms1ms
10万2ms6ms3ms
100万8ms33ms14ms
1000万9ms103ms14ms

Vector

(1)普通for循环
import java.util.Vector;

public class List_Vector {
	public static void main(String[] args) {
		Vector<String> vector=new Vector<String>();
		vector.add("A");
		vector.add("B");
		vector.add("C");
		for(int i=0;i<vector.size();i++){
			System.out.println(vector.get(i));
		}
	}
}

(2)超级for

import java.util.Vector;

public class List_Vector {
	public static void main(String[] args) {
		Vector<String> vector = new Vector<String>();
		vector.add("A");
		vector.add("B");
		vector.add("C");
		for (String v : vector) {
			System.out.println(v);
		}
	}
}

(3)迭代器iterator

import java.util.Iterator;
import java.util.Vector;

public class List_Vector {
	public static void main(String[] args) {
		Vector<String> vector = new Vector<String>();
		vector.add("A");
		vector.add("B");
		vector.add("C");
		Iterator iterator = vector.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

(4)枚举器Enumeration(Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现),现在尽量采用Iterator迭代器,Enumeration接口只可用于遍历一些“古老”的集合类,如Vector(包括其子类Stack)、Hashtable两个集合类,以及另一个极少使用的BitSet,这些都是从JDK1.遗留下来的集合类。)

import java.util.Enumeration;
import java.util.Vector;

public class List_Vector {
	public static void main(String[] args) {
		Vector<String> vector = new Vector<String>();
		vector.add("A");
		vector.add("B");
		vector.add("C");
		Enumeration enumeration=vector.elements();
		while (enumeration.hasMoreElements()) {
			System.out.println(enumeration.nextElement());
		}
	}
}

四者遍历速度比较


普通for循环超级for迭代器iterator枚举器Enumeration
1万1ms4ms1ms2ms
10万4ms12ms10ms9ms
100万36ms55ms46ms46ms
1000万322ms363ms347ms340ms

LinkedList

(1)普通for循环

import java.util.LinkedList;
import java.util.List;


public class List_LinkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		for (int i = 0; i < list.size(); i++) {
			list.get(i);
		}
	}
}

(2)超级for

import java.util.LinkedList;
import java.util.List;


public class List_LinkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		for (String v : list) {
			System.out.println(v);
		}
	}
}

(3)迭代器iterator

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;


public class List_LinkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		Iterator<String> iterator = list.iterator();
	      while (iterator.hasNext()) {
			System.out.println(iterator.next());
	      }

   }
}

(4)使用pollFirst()方法(会取出首元素并删除,遍历完list会变为空,list为空时若再输出会为null)

import java.util.LinkedList;
import java.util.List;


public class List_LinkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		while (list.size() != 0) {
			System.out.println(list.pollFirst());
		}
	}
}

(5)使用removeFirst()方法(会取出首元素并删除,遍历完list会变为空,list为空时若再输出会抛出异常)

import java.util.LinkedList;
import java.util.List;


public class List_LinkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		while (list.size() != 0) {
			System.out.println(list.removeFirst());
		}
	}
}

五者遍历速度比较

 for循环超级for迭代器iteratorpollFirst()方法removeFirst()方法
1万84ms4ms2ms2ms2ms
10万13534ms6ms3ms3ms4ms
30万153636ms27ms18ms15ms14ms
50万1192463ms37ms30ms24ms25ms

数据量较大时LinkedList避免使用get遍历。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值