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