我有一个数组,例如:
String [][] test = {{"a","1"},
{"b","1"},
{"c","1"}};
任何人都可以告诉我如何从数组中删除元素。例如,我想删除项“b”,以便数组看起来像:
{{"a","1"},
{"c","1"}}
我找不到办法。到目前为止我在这里找到的并不适合我:(
答案 0 :(得分:10)
您无法从数组中删除元素。 Java数组的大小在分配数组时确定,并且无法更改。你能做的最好的是:
将null
分配到相关位置的数组; e.g。
test[1] = null;
这使您无法处理null
值所在的数组中的“漏洞”。 (在某些情况下,这不是问题......但在大多数情况下都是如此。)
创建一个删除了元素的新数组; e.g。
String[][] tmp = new String[test.length - 1][];
int j = 0;
for (int i = 0; i < test.length; i++) {
if (i != indexOfItemToRemove) {
tmp[j++] = test[i];
}
}
test = tmp;
Apache Commons ArrayUtils
类有一些静态方法可以更加整洁地完成(例如Object[] ArrayUtils.remove(Object[], int)
,但事实仍然是这种方法创建了一个新的数组对象。
更好的方法是使用合适的Collection
类型。例如,ArrayList
类型有一个方法,允许您删除给定位置的元素。
答案 1 :(得分:6)
没有内置方法可以从常规Java数组中“删除”项目。
您要使用的是ArrayList
。
答案 2 :(得分:2)
您可以将数组中的条目设置为null
(test[0][1] = null;
)。但是,如果不重新创建数组,“删除”项目使得数组将比以前少一个元素是不可行的。如果您计划定期更改数据结构中的数据,ArrayList
(或另一个Collection类,具体取决于您的需要)可能会更方便。
答案 3 :(得分:0)
我的解决方案是:
您无法从数组中删除元素=&gt;这是正确的,但我们可以做些什么来改变当前的数组。
No need assign null to the array at the relevant position; e.g.
test[1] = null;
Create a new array with the element removed; e.g.
String[][] temp = new String[test.length - 1][];
需要获取字符串/数组的索引才能删除:IndexToRemove
for (int i = 0; i < test.length-1; i++) {
if (i<IndexToRemove){
temp[i]=test[i];
}else if (i==IndexToRemove){
temp[i]=test[i+1];
}else {
temp[i]=test[i+1];
}
}
test = temp;
希望它有用!