¡¶JAVAÓëģʽ¡·µÚ19Ìì¨Dµü´ú×Óģʽ (Îå)

2014-11-24 08:31:50 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 9
olated, the iterator
* has detected concurrent modification.
*/
int expectedModCount = modCount;

public boolean hasNext() {
return cursor != size();
}

public E next() {
checkForComodification();
try {
E next = get(cursor);
lastRet = cursor++;
return next;
} catch (IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}

public void remove() {
if (lastRet == -1)
throw new IllegalStateException();
checkForComodification();

try {
AbstractList.this.remove(lastRet);
if (lastRet < cursor)
cursor--;
lastRet = -1;
expectedModCount = modCount;
} catch (IndexOutOfBoundsException e) {
throw new ConcurrentModificationException();
}
}

final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
}

¡¡¡¡´ÓItrÀàµÄÔ´´úÂëÖпÉÒÔ¿´µ½£¬·½·¨checkForComodification()»á¼ì²é¾Û¼¯µÄÄÚÈÝÊÇ·ñ¸Õ¸Õ±»Íâ½çÖ±½ÓÐ޸Ĺý(²»ÊÇͨ¹ýµü´ú×ÓÌṩµÄ·½·¨Ð޸ĵÄ)¡£Èç¹ûÔÚµü´ú¿ªÊ¼ºó£¬¾Û¼¯µÄÄÚÈݱ»Íâ½çÈÆ¹ýµü´ú×Ó¶ÔÏó¶øÖ±½ÓÐ޸ĵϰ£¬Õâ¸ö·½·¨»áÁ¢¼´Å׳öConcurrentModificationException()Òì³£¡£

¡¡¡¡Õâ¾ÍÊÇ˵£¬AbstractList.Itrµü´ú×ÓÊÇÒ»¸öFail FastµÄµü´ú×Ó¡£

µü´ú×ÓģʽµÄÓŵã
¡¡¡¡£¨1£©µü´ú×Óģʽ¼ò»¯Á˾ۼ¯µÄ½Ó¿Ú¡£µü´ú×Ӿ߱¸ÁËÒ»¸ö±éÀú½Ó¿Ú£¬ÕâÑù¾Û¼¯µÄ½Ó¿Ú¾Í²»±Ø¾ß±¸±éÀú½Ó¿Ú¡£

¡¡¡¡£¨2£©Ã¿Ò»¸ö¾Û¼¯¶ÔÏ󶼿ÉÒÔÓÐÒ»¸ö»ò¶à¸öµü´ú×Ó¶ÔÏó£¬Ã¿Ò»¸öµü´ú×ӵĵü´ú״̬¿ÉÒÔÊDZ˴˶ÀÁ¢µÄ¡£Òò´Ë£¬Ò»¸ö¾Û¼¯¶ÔÏó¿ÉÒÔͬʱÓм¸¸öµü´úÔÚ½øÐÐÖ®ÖС£

¡¡¡¡£¨3£©ÓÉÓÚ±éÀúËã·¨±»·â×°ÔÚµü´ú×Ó½ÇÉ«ÀïÃæ£¬Òò´Ëµü´úµÄËã·¨¿ÉÒÔ¶ÀÁ¢ÓÚ¾Û¼¯½ÇÉ«±ä»¯¡£

×÷Õߣºm13666368773