[英]How to shift elements in array?
我正在嘗試創建一種在“數據”數組中進行搜索以找到字符串“ elt”的方法。 如果存在,則會將“ elt”之后的所有元素向左移動一個位置(以覆蓋“ elt”所在的單元格)。
我能夠找到“ elt”的所有實例並將它們設置為null,但是在將所有元素通過“ elt”向下移動到數組中的一個空間時遇到了問題。 下面的代碼是我到目前為止所擁有的。
public class Bag<T> implements Iterable<T> {
private final int MAXLEN = 3;
private int size;
private T[] data; // array
public T remove(T elt) {
for (int i=0; i<data.length; i++) {
if ("elt".equals(data[i]) ) {
data[i] = null;
for (i++; i < data.length; i++) {
data[i] = data[i-1];
}
}
}
public static void main(String[] args) {
Bag<String> sbag = new Bag<String>();
sbag.add("Noriko");
sbag.add("Buddy");
sbag.add("Mary");
sbag.add("Peter");
sbag.add("elt");
sbag.add("hello");
Iterator<String> it = sbag.iterator();
while (it.hasNext()) {
String val = it.next();
System.out.println(val);
}
sbag.remove("elt");
Iterator<String> it2 = sbag.iterator();
while (it2.hasNext()) {
String val = it2.next();
System.out.println(val);
}
}
當我運行該代碼時,我得到:
Noriko Buddy Mary Peter埃爾特你好Noriko Buddy Mary Peter null
但是,我期望
Noriko Buddy Mary Peter問候你好Noriko Buddy Mary Peter問候你好
有人可以告訴我如何修復代碼,以便將數組中的其余項下移嗎? 我認為問題出在我的刪除方法中。
如果我了解您要正確實現的目標,則說明您在改變錯誤的方式:
public T remove(T elt) {
for (int i=0; i<data.length; ++i) {
if (elt.equals(data[i]) ) {
data[i] = null;
for (++i; i < data.length; ++i) {
data[i-1] = data[i];
}
break;
}
}
`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.