gpt4 book ai didi

java - 不使用 Iterator 从 Vector 中删除元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:42 25 4
gpt4 key购买 nike

您好,我正在尝试从 vector 中删除某些元素。我有一个有效的解决方案,但对我来说它既不优雅也不理想。我在 MIDP 中,所以我无权访问 Iterator 类。有什么想法是实现它的最佳方式吗?

当前代码:

    int size = myVector.size();
Object[] copyofObjects = new Window[size];
myVector.copyInto(copyofObjects);
boolean didDelete = false;

for(int i = 0; i < size; i++)
{
Object o = copyofObjects[i];
if(o.shouldBeDeleted())
{
myVector.removeElementAt(myVector.indexOf(o));
continue;
}
}

最佳答案

您可以使用他们在 c++ 中执行此操作的方式 (std::remove_if)。基本思想是将所有要删除的元素推到 vector 的末尾,然后一次性调整 vector 的大小。它是这样的:(对不起,如果我的 java 有点生锈)

for (int i = 0 , j = 0; i < size ; i++){
MyObject o = (MyObject)myVector.get (i);
if (!o.shouldBeDeleted ()){
//swap the element
temp = myVector[i]
myVector[i] = myVector[j]
myVector[j] = temp;
j++;
}
}

所有来自 [0-j[ 的元素都是好元素,来自 [j-size-1[ 的元素是坏元素:

myVector.resize(j);

关于java - 不使用 Iterator 从 Vector 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14692526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com