Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为对象数组实现移除方法_Java_Arrays_List - Fatal编程技术网

Java 如何为对象数组实现移除方法

Java 如何为对象数组实现移除方法,java,arrays,list,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

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

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]  
我尝试了两种不同的删除方法,它们都是相同的(一种是我创建的,另一种是我几天前在堆栈上发现的最相似的问题)

第一次删除:

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;
}
公共布尔删除(对象){

对于(int i=0;i您必须在数组中找到对象,然后将最后一个对象移动到该索引(如果它不是最后一个)并减小大小

if (obj == null) return;

for (int i = 0; i < size; i++) {
    if (obj.equals(set[i])) {
        set[i] = set[--size];
        break;
    }
}
if(obj==null)返回;
对于(int i=0;i
您的remove方法除了检查列表中是否存在对象之外,什么也不做

将对象设置为null不会将其从列表中删除。要从列表中删除该对象,必须执行以下操作:

  • 查找对象在数组中的位置
  • 从阵列中删除找到的位置

  • 要删除该位置,您可以将索引后的所有值向左移动(就像第二个算法尝试做的那样)。或者您可以创建一个新数组,并将内容从旧数组复制到新数组(跳过找到的索引)。

    很抱歉,但是(未编辑的版本,谢谢@TheStijn)你的代码看起来很糟糕。而且无论如何都不应该编译(
    object
    )。不知怎的,我想起了……为什么你在实现一个集合时把它称为列表?嗯,我看到的只是格式更正。正确的格式是给程序员的。现在是凌晨5点,我“开始”我的一天过了两个小时。我很抱歉。虽然我笑了笑漫画,但我还是很生气(哈!)。我不是故意要增加混乱。这是一套ADT实现,但我们正在研究列表。现在确实是睡觉的时候了。