ListIterator抛出错误

时间:2013-09-13 17:04:57

标签: java

private List<RolePermission> permissionList = new ArrayList<RolePermission>();
ListIterator<RolePermission> iterator = permissionList.listIterator();
permissionList.remove(iterator.next().getRolePermissionName().contains("http"));

我想从列表中删除包含术语“http”的项目。但是这段代码不起作用。

2 个答案:

答案 0 :(得分:5)

您需要使用iterator.remove();

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

答案 1 :(得分:1)

方法List#remove(java.lang.Object)不适用于boolean类型(自动装箱到Boolean),contains()返回的类型。抛出ClassCastException

您可以尝试使用迭代器删除它:

private List<RolePermission> permissionList = new ArrayList<RolePermission>();   
ListIterator<RolePermission> iterator = permissionList.listIterator();
RolePermission rp = iterator.next();
if(rp.getRolePermissionName().contains("http")) {
    iterator.remove();
}