【发布时间】:2014-03-10 02:10:43
【问题描述】:
我有以下要求来编写一个java方法。
编写一个名为removeInRange 的方法,它接受四个参数:整数列表、元素值、起始索引和结束索引。该方法的行为是删除在起始索引(包括)和结束索引(不包括)之间的列表中出现的所有给定元素。出现在给定索引范围之外的其他值和给定值的出现不受影响。
例如,对于列表 (0, 0, 2, 0, 4, 0, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16),调用 removeInRange( list, 0, 5, 13) 应该产生列表 (0, 0, 2, 0, 4, 6, 8, 10, 12, 0, 14, 0, 16)。请注意,位于原始列表(在进行任何修改之前)中 5(含)和 13(不含)之间的索引处的零已被删除。 我写的方法如下:
public static void removeInRange(List<Integer> list,int value,int beg,int end)
{
beg=new Integer(beg);
//Integer b=beg;
int count=0;
list.subList(5, 13);
/* for( Integer b:list.subList(beg, end))
{
if(list.get(b)==value)
list.remove(b);
}
*/
Iterator<Integer> iter = list.subList(beg, end).iterator();
int i=iter.next();
while(iter.hasNext())
{
if (iter.next().intValue()==value)
{
iter.remove();
}
}
System.out.println(list);
}
但是,此方法在线程“main”java.lang.UnsupportedOperationException 中给了我错误异常。我想要任何提示或建议如何更改我的方法以避免此异常?
【问题讨论】:
-
对于
ArrayList,不需要使用迭代器;您可以使用ArrayList.get(index)函数。以下链接提供了您问题的完整解决方案。使用该程序来纠正您的程序。 Complete working program.