我有以下代码:

Widget[] widgetArray = widgetService.getAllWidgets();
List<Widget> widgets = Arrays.asList(widgetArray);

// Prune out any Widgets named "Melvin".
Iterator<Widget> iter = widgets.iterator();
while(iter.hasNext()) {
    Widget w = iter.next();

    if("Melvin".equals(w.getName()))
        iter.remove();
}


当我运行这段代码时,我得到一个运行时java.lang.UnsupportedOperationExceptionError,它带有null的模糊异常消息,该消息被抛出在iter.remove()行上。似乎某些Java Iterators不支持remove方法,并且会抛出此异常。

我无法将widgetService.getAllWidgets()方法更改为返回List<Widget>,并且卡在Widget[]数组返回值中。

所以我问:我该怎么做才能遍历我的widgets数组并动态修剪掉那些名为“ Melvin”的数组?

最佳答案

如果负担得起,只需复制列表即可。更换

List<Widget> widgets = Arrays.asList(widgetArray);




List<Widget> widgets = new ArrayList<Widget>(Arrays.asList(widgetArray));

10-08 19:34