如何更正我的方法以便从数组中删除字符串?

时间:2015-10-18 22:01:24

标签: java arrays

我正在尝试创建一种搜索'数据的方法。数组找到参数' elt'。如果存在,则该方法删除它。我无法弄清楚如何删除字符串" 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 (T word : data) {
        if (word == "elt")
            data = data.remove(word);
        }
    }       
}

我得到的错误是&#34;无法删除(T)数组类型T []。

有人可以告诉我如何正确删除字符串&#34; elt&#34;从阵列?

2 个答案:

答案 0 :(得分:2)

data是一个数组,因此您无法将其删除。

您有几个选择:

  1. 将元素设置为null
  2. (1)并将其他元素向下移动
  3. 使用Collection(例如ArrayList) - 然后您可以删除
  4. 选项(3)将是最简单的。如果您需要使用数组,(1)将类似于:

    for (int i=0; i<data.length; i++) {
        if ("elt".equals(data[i]) {
            data[i] = null;
        }
    }
    

答案 1 :(得分:2)

你无法删除&#34;数组中的值:创建数组后,无法更改数组中的元素数。

但是,您可以更改元素的值,例如将其设置为null。为此,您需要元素的索引,因此您无法使用增强的for循环。

如果您想要一个可变大小的容器,请使用可变的List,例如ArrayList。然后,您可以简单地使用list.remove("elt"),不需要显式循环。

除此之外:使用"elt".equals(word)代替word == "elt"