如何从数组中删除元素

Pet*_*ter 7 java arrays

我有一个数组例如:

String [][] test = {{"a","1"},
                    {"b","1"},
                    {"c","1"}};
Run Code Online (Sandbox Code Playgroud)

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

{{"a","1"},
 {"c","1"}}
Run Code Online (Sandbox Code Playgroud)

我找不到办法.到目前为止我在这里发现的不适合我:(

Ste*_*n C 11

您无法从数组中删除元素.Java数组的大小在分配数组时确定,并且无法更改.你能做的最好的事情是:

  • null在相关位置分配给数组; 例如

    test[1] = null;
    
    Run Code Online (Sandbox Code Playgroud)

    这使您null无法处理值所在的数组中的"漏洞" .(在某些情况下,这不是问题......但在大多数情况下都是如此.)

  • 创建一个删除了元素的新数组; 例如

    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;
    
    Run Code Online (Sandbox Code Playgroud)

    Apache Commons ArrayUtils类有一些静态方法,可以更加整齐地完成这项工作(例如Object[] ArrayUtils.remove(Object[], int),但事实仍然是这种方法创建了一个新的数组对象.

更好的方法是使用合适的Collection类型.例如,ArrayList类型有一个方法,允许您删除给定位置的元素.


Ton*_*ony 7

没有内置方法可以从常规Java数组中"删除"项目.

你想要使用的是一个ArrayList.