You cannot change the length of a Collection (by adding or removing items) while iterating
through it.
You can
- make a copy of the account collections, delete accounts from that copy during iteration,
clear the account collection and insert all elements of the copy into the account
collection *uff*
- insert all accounts to delete into a toDelete collection during iteration, and then
iterate over the toDelete collection and delete items from the account collection.
Confused? Here's an example for the second way:
public void filter(...) {
| Collection<Accounts> toDelete = new ArrayList<Accounts>();
| for (Account a: accounts)
| if(accounts.notAccessibleBy(user)
| toDelete.add(a);
| else if (accounts.accessibleBy(user)
| continue;
| else
| toDelete.add(a);
|
| for (Account a: toDelete)
| accounts.remove(a);
| }
btw: The checks you make (notAccessiblyBy, accessibleBy) seem to be a bit weird ;). It
looks like you want to keep ALL accounts in the collection or delete ALL of them.
Wouldn't it work like this?
public void filter(...) {
| if (accounts.notAccessibleBy(user))
| accounts.clear();
| }
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3960375#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...