关于删除数组中所有的元素e
来源:2-5 包含,搜索和删除
cngaara
2019-09-07
首先要找到元素e在数组中的所有索引
// 找到数组中所有元素e的索引
public Array<Integer> findAll(E e){
Array<Integer> ret = new Array<>();
for(int i = 0; i < size; i ++){
if(data[i].equals(e))
ret.addLast(i);
}
return ret;
}
然后逐个索引,调用remove()函数删除。
// 从数组中删除所有元素e
public void removeAllElement(E e){
Array<Integer> indexs = indexs = findAll(e);
if(indexs.size != 0)
for(int i = 0; i < indexs.size; i ++){
remove(indexs.get(i));
size --;
}
}
但是测试的时候,会报错,debug看了一下,应该是indexs对象的data属性,将原来数组的data属性覆盖了。不知道怎么办才好。
写回答
1回答
-
比如你找到的索引是 1, 2, 3
但是,当你删除去掉了索引1的元素以后,2,3的索引会改变的啊。
再想想看?
继续加油!:)
012019-09-07
相似问题