2013-09-13 6 views
-2
private List<RolePermission> permissionList = new ArrayList<RolePermission>(); 
ListIterator<RolePermission> iterator = permissionList.listIterator(); 
permissionList.remove(iterator.next().getRolePermissionName().contains("http")); 

Я хочу удалить этот элемент из списка, который содержит термин «http». но этот код не работает.ListIterator, делающий ошибку

+0

«этот код не работает» довольно расплывчато: Есть ли компилировать? Вызывает ли это исключение? Какое исключение? На какой линии? и т. д. – assylias

+0

Для этого вы должны использовать Iterator.remove(). Посмотрите http://stackoverflow.com/questions/223918/efficient-equivalent-for-removing-elements-while-iterating-the-collection –

ответ

5

Вам необходимо использовать iterator.remove();

while (iterator.hasNext()) 
{ 
    if (iterator.next().getRolePermissionName().contains("http")) 
     iterator.remove(); 
} 
+0

Thanks Matthew :) – lakshman

+0

Вам следует «принять» ответ, если вы думаете, что @Matthew дал что вам нужно. – dcsohl

1

Метод List#remove(java.lang.Object) в вашем случае не подходит для типа boolean (autoboxed к Boolean), тип которого возвращается. Выбрасывается ClassCastException.

вы могли бы попробовать это удалить с помощью итератора:

private List<RolePermission> permissionList = new ArrayList<RolePermission>(); 
ListIterator<RolePermission> iterator = permissionList.listIterator(); 
RolePermission rp = iterator.next(); 
if(rp.getRolePermissionName().contains("http")) { 
    iterator.remove(); 
} 
Смежные вопросы