我正在尝试创建一种搜索'数据的方法。数组找到参数' 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;从阵列?
答案 0 :(得分:2)
data
是一个数组,因此您无法将其删除。
您有几个选择:
Collection
(例如ArrayList
) - 然后您可以删除选项(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"
。