List,Map在遍歷的時候remove

呂建奎發表於2015-06-06

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);
        }
      }

相關文章