我試圖創建一個方法,將數組中的變量elt的每個實例設置爲null,然後將每個變量往左邊。我寫的當前代碼只將變量的第一個實例設置爲null,並將所有其他變量移到左側,但不會將其他任何elt實例設置爲null。我到目前爲止的代碼如下。如何設置數組中的某些變量的每個實例爲空,並將每個變量左移
public T remove(T elt) {
boolean exist = false;
for (int i=0; i<data.length; i++) {
if (data[i] == elt) {
data[i] = null;
size--;
exist = true;
for (++i; i < data.length; i++) {
data[i-1] = data[i];
}
}
}
if (exist == true)
return elt;
else
return null;
}
在主,我有以下代碼:
public static void main(String[] args) {
Bag<String> sbag = new Bag<String>();
sbag.add("Noriko");
sbag.add("hello");
sbag.add("Buddy");
sbag.add("Mary");
sbag.add("Peter");
sbag.add("hello");
sbag.remove("hello");
當我打印陣列,我希望以下的輸出:
酒井法子 好友 瑪麗 彼得
相反,我得到:
酒井法子 好友 瑪麗 彼得 你好
這告訴我,它只是設置的ELT的第一個實例爲null,每一個變量向左移動,和停止。任何人都可以告訴我如何修復我的代碼,以便設置變量elt null的每個實例?
我會贊成票的問題的很好的說明,而是由dasblinkenlight答案修復(未說明)的非線性響應時間的問題了。 – Andreas