List的遍历 Java
生活随笔
收集整理的這篇文章主要介紹了
List的遍历 Java
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、對(duì)List的遍歷有三種方式???
????
?? List<String>??? list??? =??? new??? ArrayList<String>();???
?? list.add("testone");???
?? list.add(“testtwo”);???
?? ...???
????
?? 第一種:???
?? for(Iterator<String>??? it??? =??? list.iterator();??? it.hasNext();??? )??? {???
?????? ....???
?? }???
?? 這種方式在循環(huán)執(zhí)行過(guò)程中會(huì)進(jìn)行數(shù)據(jù)鎖定,??? 性能稍差,??? 同時(shí),如果你想在尋歡過(guò)程中去掉某個(gè)元素,只能調(diào)用it.remove方法,??? 不能使用list.remove方法,??? 否則一定出現(xiàn)并發(fā)訪問(wèn)的錯(cuò)誤.???
?? 第二種:???
?? for(String?? data ?? :??? list)??? {???
?????? .....???
?? }???
?? 內(nèi)部調(diào)用第一種,??? 換湯不換藥,? 因此比Iterator 慢,這種循環(huán)方式還有其他限制, 不建議使用它。
????
?? 第三種:???
?? for(int??? i=0;??? i<list.size();??? i++)??? {???
?????? A??? a??? =??? list.get(i);???
?????? ...???
?? }???
?? 內(nèi)部不鎖定,??? 效率最高,??? 但是當(dāng)寫(xiě)多線程時(shí)要考慮并發(fā)操作的問(wèn)題。
二、測(cè)試實(shí)例
package com.inspur.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
?*@author WHD
?*2015-3-5
?*/
@SuppressWarnings("unused")
public class MapTest {
?? ?private static List<String> list= new ArrayList<String>();
?? ?public static void main(String[]args){
?? ??? ?MapTest? mapTest = new? MapTest();
?? ??? ?mapTest.initList(list);
?? ??? ?mapTest.foreach(list);
?? ??? ?mapTest.forlist(list);
?? ??? ?mapTest.iteratorList(list);
?? ?}
?? ?
?? ?//list 集合中添加10萬(wàn)條數(shù)據(jù)
?? ?public List initList(List<String> list){
?? ???? int i=0;
?? ??? ?int num=6000000;
?? ??? ?for(i=0;i<num;i++){
?? ??? ??? ?list.add("list"+i);
?? ??? ?}
?? ??? ?return list;
?? ?}
?? ?//list 集合遍歷 foreach
?? ?
?? ?public void? foreach(List<String> list){
?? ??? ?long start= System.currentTimeMillis();
?? ??? ?for(String data:list){
?? ??? ??? ?String value=data;
?? ??? ?}
?? ??? ?
?? ??? ?long end=System.currentTimeMillis();
?? ??? ?long count=end-start;
?? ??? ?System.out.println("foreach 循環(huán)時(shí)間"+count);
?? ?}
?? ?// list集合遍歷? for
?? ?public void forlist(List<String> list){
?? ??? ?long start=System.currentTimeMillis();
?? ??? ?int i=0;
?? ??? ?for( i=0;i<list.size();i++){
?? ??? ??? ?String value=list.get(i);
?? ??? ?}
?? ??? ?long end=System.currentTimeMillis();
?? ??? ?long count=end-start;
?? ??? ?System.out.println("for list.size() 遍歷時(shí)間"+count);
?? ?}
?? ?
?? ?// Iterator 遍歷循環(huán)
?? ?public void iteratorList(List<String> list){
?? ??? ?long start= System.currentTimeMillis();
?? ??? ?for(Iterator<String>? it=list.iterator();it.hasNext();){
?? ??? ??? ?String value=it.next();
?? ??? ?}
?? ??? ?long end=System.currentTimeMillis();
?? ??? ?long count=end-start;
?? ??? ?System.out.println("iterator 遍歷時(shí)間"+count);
?? ?}
}
三、測(cè)試結(jié)果:
(1)、第一次
foreach? 遍歷時(shí)間:55
for list.size()遍歷時(shí)間:47
iterator 遍歷時(shí)間:51
(2)、第二次
foreach? 遍歷時(shí)間:54
for list.size()遍歷時(shí)間:44
iterator 遍歷時(shí)間:50
(3)、第三次
foreach? 遍歷時(shí)間:48
for list.size()遍歷時(shí)間:43
iterator 遍歷時(shí)間:44
從測(cè)試的結(jié)果我們可以明顯的看到效率了!
轉(zhuǎn)載于:https://www.cnblogs.com/cooking/p/4914480.html
總結(jié)
以上是生活随笔為你收集整理的List的遍历 Java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 项目模板目标文档
- 下一篇: 小米开源文件管理器MiCodeFileE