java - 如何为对象数组实现 remove 方法

标签 java arrays list

我知道我的添加方法是正确的:

public void add(Object object) {
    if (!contains(object) && size !=maxObjects) {
        set[size] = object; size++;
    }
    else 
        System.out.println("Already exists.");
}

因为我得到的打印输出如下:

Set [maxObjects=8, set=[a, 7, null, null, null, null, null, null], count=2]  
true  (I ask if it contains a value)  
false  "                            "  
Set [maxObjects=8, set=[a, 7, b, Valencia, 24, s, Victoria, null], count=7]  
Set [maxObjects=8, set=[a, 7, b, Valencia, 24, s, Victoria, 4234], count=8]  

我尝试了两种不同的删除方法,它们都是相同的(一种是我创建的;另一种是我几天前在 Stack 上发现的最相似的问题。)

第一次删除:

public boolean remove(Object object) {
    if (contains(object)) {
        object = null; 
        return true;
    }
    System.out.println("The object doesn't exist to delete.");
    return false;
}

另一个删除:

public boolean remove(object object) {
    for (int i=0; i<(size-1); i++) {
        while (!contains(object) && size <= maxObjects) {
            set[i] = set[i+1]; size--; return true;
        }
    }
    System.out.println("Doesn't exist.");
    return false;
}

任何帮助都会很棒!

最佳答案

您必须在数组中找到对象,然后例如将最后一个对象移动到该索引(如果它还不是最后一个)并减小大小。

if (obj == null) return;

for (int i = 0; i < size; i++) {
    if (obj.equals(set[i])) {
        set[i] = set[--size];
        break;
    }
}

关于java - 如何为对象数组实现 remove 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971380/

相关文章:

Java客户端-服务器聊天应用程序: Weird problems with communication

arrays - 有条件地实例化一个新的Perl数组

python - 用python字符串的ascii序数列表

Python:创建一个新列表,其中包含已排序的嵌套列表中的所有元素

java - 我在 for 循环中大写了太多元素,但仅在特定索引上大写

java - 如何解释这个关于日历的java代码

java - Android WebView - JWT 身份验证

java - 这是类型转换错误还是参数没有正确传递给方法?

java - 使用 JNA 将 C 数组返回给 Java

C# 如何使用 LINQ 将列表一分为二