我对删除 Java
中对象的 array
中按 number
的所有元素有疑问,不建议这样做使用ArrayList,该方法有效,但只是它不会消除某些元素,而由于它们在数组中的位置而导致某些元素被修改
类
包
public class Pack {
static int nextNumber = 0;
int number;
String name;
public Pack(String name) {
this.number = ++nextNumber;
this.name = name;
}
@Override
public String toString() {
return "Pack ID:" + number + " - Name: " + name;
}
}
类
容器
class Container {
static int nextNumber = 0;
int number;
int qtPack;
Pack[] packs;
public Container() {
this.number = ++nextNumber;
this.qtPack = 0;
this.packs = new Pack[10];
}
public boolean addPack(Pack pack) {
packs[qtPack] = pack;
qtPack++;
return true;
}
public Pack removePack(int numberPack) {
int idx;
Pack removePack = null;
idx = indexOfPackByID(numberPack);
if (idx != -1) {
removePack = packs[idx];
if (removePack != null) {
for (int i = idx; i < qtPack - 1; i++) {
packs[i] = packs[i + 1];
}
qtPack--;
}
}
return removePack;
}
private int indexOfPackByID(int numberPack) {
for (int i = 0; i < qtPack; i++) {
if ((packs[i] != null)
&& (packs[i].number == numberPack)) {
return i;
}
}
return -1;
}
}
类
主要
public class Main {
public static void main(String[] args) {
Pack[] packs = new Pack[5];
packs[0] = new Pack("A");
packs[1] = new Pack("B");
packs[2] = new Pack("C");
packs[3] = new Pack("D");
packs[4] = new Pack("E");
Container container = new Container();
for (int i = 0; i < packs.length; i++) {
container.addPack(packs[i]);
}
System.out.println("--- PACK IN CONTAINER ---");
for (int i = 0; i < container.qtPack; i++) {
System.out.println(container.packs[i].toString());
}
System.out.println("\n--- REMOVE PACK ---");
for (int i = 0; i < container.qtPack; i++) {
Pack pack = container.removePack(container.packs[i].number);
System.out.println("Remove " + pack.name+" - ID: "+pack.number);
}
}
}
Main
的输出
--- PACK IN CONTAINER ---
Pack ID:1 - Name: A
Pack ID:2 - Name: B
Pack ID:3 - Name: C
Pack ID:4 - Name: D
Pack ID:5 - Name: E
--- REMOVE PACK ---
Remove A - ID: 1
Remove C - ID: 3
Remove E - ID: 5
有什么建议吗?
最佳答案
您可以将它们从末尾删除...
for (int i = container.qtPack-1; i >= 0; i--) {
Pack pack = container.removePack(container.packs[i].number);
System.out.println("Remove " + pack.name+" - ID: "+pack.number);
}
...或者始终删除第一个元素:
int count = container.qtPack;
for (int i = 0; i < count; i++) {
Pack pack = container.removePack(container.packs[0].number);
System.out.println("Remove " + pack.name+" - ID: "+pack.number);
}
这是因为通过更改数组,您将在每次迭代中更改条件(此处 container.packs
和 container.qtPack
)。请记住循环条件 i < container.qtPack
每次迭代都会进行评估。
关于java - Java中删除数组中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534566/