簡體   English   中英

如何移動數組中的元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM