迭代器是工作在一個獨立的線程中,並且擁有一個mutex鎖,就是說iterator在工作的時候,是不允許被迭代的對象被改變的。iterator被創建的時候建立一個內存索引表(單鏈表),這個索引表指向原來的對象,當原來的對象數量改變的時候,這個索引表的內容沒有同步改變,所以當索引指針往下移的時候,便找不到要迭代的對象,於是錯誤。List、Set等是動態的,可變對象的數量的數據結構,但是iterator則是單向不可變的,只能順序讀取,不能逆序操作的數據結構,當iterator指向的原始數據發生變化時,iterator自己就迷失了方向。
next()返回遊標右邊的元素,並將遊標移到下一個位置。hasnext()判斷右邊是否又元素。