 <p>An alternative to filtering would be to maintain the list of selected users. In <code>setSelected(true)</code> you could add a user to the list and use <code>setSelected(false)</code> to remove it.</p> <pre><code>class User { List&lt;User&gt; selectedUsers = new ArrayList&lt;User&gt;(0); void setSelected(boolean isSelected) { if ( isSelected) { selectedUsers.add(user.getId()); } else { int idx = selectedUsers.indexOf( this ); if ( idx &gt;= 0 ) selectedUsers.remove( idx ); } } } </code></pre> <p>This aproach requires an implemented equals method. BTW your snippet adds the userId (Int?) to the list of type User.</p>