WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院WEB开发Jsp 使用iterator节省代码 阅读

使用iterator节省代码

 2008-01-05 08:42:07 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示:当对map 或者collection执行iterate时,通过遍历map或者collection应用程序接口(API)删除一个元素是非法的,使用iterator节省代码,假如你试着运行如下的代码:import java.util.*;public class TestIterator {static public vo

  当对map 或者collection执行iterate时,通过遍历map或者collection应用程序接口(API)删除一个元素是非法的。假如你试着运行如下的代码:

import java.util.*;
public class TestIterator {

static public void main(String[ ] strs) {
HashMap map = new HashMap( );
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
Iterator iterator = map.keySet( ).iterator( );
Object obj = iterator.next( );
obj = iterator.next( );
map.remove(obj);
obj = iterator.hasNext( );
}
}
就会抛出如下异常:

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.next(HashMap.java:736)
at TestIterator.main(TestIterator.java:14)

remove 方法使iterator无效,并且当在下一次对iteration操作的时候,异常就会抛出。仔细检查iterator的API,以便正确地从iterator中移走当前值。可对前面的例子做如下修改:

map.remove(obj);
把上行换为:

iterator.remove(obj);
任何对map的改变都会使iterator无效,remove 是iterator接口直接支持的唯一的修改方法

Tags:使用 iterator 节省

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接