使用object从Array中删除

时间:2014-03-24 11:49:57

标签: java

如果你有一个数组(不能是ArrayList),它将用于存储特定的东西,如“狗类型”,“狗名”和“狗年龄”。然后你创建一个显然会输入这些元素的对象。但是,如果用户想要删除整个对象(所有输入名称,年龄和年龄),那么他们可以通过删除狗的年龄来完成此操作,然后将删除所有这些。如果不使用ArrayList,这是否可行?

2 个答案:

答案 0 :(得分:0)

你可以这样做。它并不是一个非常好的Java方法,但它可以工作,你可以很容易地重构它。

这里有狗类:

public class Dog {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static Dog[] removeByName(Dog[] list, String name) {
        int counter = 0;
        Dog[] result = new Dog[3];
        for (int i = 0; i < list.length; i++) {
            if (!list[i].getName().equals(name)) {
                result[counter] = list[i];
                counter++;
            }
        }
        return result;
    }

}

在这里你可以看到如何使用它:

public class NotArrayList {

    public static void main(String[] args) {
        Dog[] dogs = new Dog[3];

        Dog d1 = new Dog();
        d1.setName("aaa");
        d1.setAge(1);

        Dog d2 = new Dog();
        d2.setName("bbb");
        d2.setAge(1);

        Dog d3 = new Dog();
        d3.setName("ccc");
        d3.setAge(1);

        dogs[0] = d1;
        dogs[1] = d2;
        dogs[2] = d3;

        Dog[] res = Dog.removeByName(dogs, "aaa");
        for (Dog d : res) {
            if (d != null)
                System.out.println(d.getName());
        }
    }
}

答案 1 :(得分:0)

如果我理解你的问题,那么我想你可以有一个删除方法,通过将该特定索引设为Dog来从数组中删除null对象引用。

public void removeDog(Dog[] dogArray, int age) {
    for(int i = 0; i < dogArray.length; i++) {
        if(dogArray[i].getAge() == age){
           dogArray[i] = null; // removing the dog object by making it null
           break; 
        }
    }
}

您需要注意以下是对上述方法的假设。

  • 阵列的大小不会改变。只是引用现在已删除的Dog对象的索引现在是null
  • 如果有多个具有相同年龄的Dog个对象,则首先会删除数组中存在的Dog对象(按索引方式)。
  • 如果dogArray参数不是实例变量,则传递int参数,否则可以避免。{/ li>
  • 年龄属于Dog类型,getAge()类有一个公共getter,boolean
  • 此方法不会返回任何内容,但您可以根据需要返回Dog(删除状态)或{{1}}(已删除的Dog对象)。