List,Map在遍歷時remove裏邊的元素是會報異常的,所以我們要在遍歷之前聲明一個List,Map對象,用來存儲要刪除的元素,然後等遍歷完成之後,for循環之前聲明的List,Map,刪除遍歷裏邊的元素,具體例子如下:
contactsLists是遍歷的List,要刪除的List都放到了errorContactsList裏邊
List<ContactsList> errorContactsList = new ArrayList<ContactsList>();
for (ContactsList contactsList : contactsLists)
{
if (contactsList.getName().trim().length() > NAME_LENGTH)
{
contactsList.setName(contactsList.getName().substring(0, NAME_LENGTH));
}
Matcher matcher = CELL_PHONE_PATTERN.matcher(contactsList.getPhone());
if (!matcher.matches())
{
errorContactsList.add(contactsList);
}
}
if (errorContactsList.size() > 0)
{
for (ContactsList contactsList : errorContactsList)
{
contactsLists.remove(contactsList);
}
}