我有以下代码:
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));