如何从数组中删除元素

时间:2011-05-09 09:47:25

标签: java arrays

我有一个数组,例如:

String [][] test = {{"a","1"},
                    {"b","1"},
                    {"c","1"}};

任何人都可以告诉我如何从数组中删除元素。例如,我想删除项“b”,以便数组看起来像:

{{"a","1"},
 {"c","1"}}

我找不到办法。到目前为止我在这里找到的并不适合我:(

4 个答案:

答案 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)

您可以将数组中的条目设置为nulltest[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;

希望它有用!