我有一个示例代码,但它不起作用:
List<Byte> myList = Arrays.asList(B);
Iterator<Byte> itr = myList.iterator();
while(itr.hasNext())
{
Byte element = itr.next();
if(element == 32)
{
itr.remove();
}
}
我无法理解为什么上面的代码会产生以下异常。
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:144)
at java.util.AbstractList$Itr.remove(AbstractList.java:360)
答案 0 :(得分:4)
List<Byte> myList = Arrays.asList(B);
返回无法修改的固定大小列表。
答案 1 :(得分:2)
Arrays.asList(B);
返回固定大小的列表:您可以设置或获取项目但不能删除或添加。这在the javadoc:
返回由指定数组支持的固定大小的列表。
要创建灵活大小的列表,您可以使用:
List<Byte> myList = new ArrayList<> (B.length);
Collections.addAll(myList, B);
比以下更有效(只创建一个对象):
List<Byte> myList = new ArrayList<> (Arrays.asList(B));
答案 2 :(得分:0)
Arrays.asList
返回Arrays.ArrayList
这是静态内部类,并且不会覆盖AbstractList
的删除操作和AbstractList
UnsupportedOperationException
次{{1}}的删除操作}。