我正在尝试从List
中删除一些元素,但即使是最简单的示例,如this answer或this中的元素也无效。
public static void main(String[] args)
{
List<String> list = Arrays.asList("1", "2", "3", "4");
for (Iterator<String> iter = list.listIterator(); iter.hasNext();)
{
String a = iter.next();
if (true)
{
iter.remove();
}
}
}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at java.util.AbstractList$Itr.remove(Unknown Source)
使用普通Iterator
代替ListIterator
无济于事。
我错过了什么?我正在使用java 7。
答案 0 :(得分:29)
这只是Arrays.asList()的一个功能,之前有人问过this question
您可以将其包装在新列表中
List list = new ArrayList(Arrays.asList("1",...));
答案 1 :(得分:25)
Arrays.asList()
返回一个由原始数组支持的列表。您对列表所做的更改也会反映在您传入的数组中。由于您无法向阵列添加或删除元素,因此也无法对列表进行此操作,这就是您remove
调用的原因失败。
如果您希望能够动态添加和删除元素,则需要List
(ArrayList
,LinkedList
等)的不同实现。
答案 2 :(得分:-3)
使用要删除的元素创建一个新列表,然后调用removeAll
methode。
List<Object> toRemove = new ArrayList<Object>();
for(Object a: list){
if(true){
toRemove.add(a);
}
}
list.removeAll(toRemove);