迭代器删除方法

里亚纳德

我有一个示例代码,但无法正常工作:

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)
亚述

Arrays.asList(B);返回固定大小的列表:您可以设置或获取项目,但不能删除或添加。这在javadoc中进行解释

返回由指定数组支持的固定大小的列表。

要创建大小灵活的列表,可以使用:

List<Byte> myList = new ArrayList<> (B.length);
Collections.addAll(myList, B);

它比以下方法更有效(仅创建一个对象),并且具有以下可读性:

List<Byte> myList = new ArrayList<> (Arrays.asList(B));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章