如何从 Java 数组中删除一个条目,以便其他条目保持顺序

2023-12-21

原谅笨拙的标题

我想编写一个方法,从数组中删除特定条目,但不会在数组中留下空间隙。例如,如果一个字符串数组包含

|aa,bb,cc,dd,ee|

系统将提示用户输入要删除的数字,该方法将找到该条目的索引,删除该索引,然后将空条目移动到最后一个插槽。

因此,如果用户输入 cc,数组的内容将为

|aa,bb,dd,ee,null|

编辑:我意识到我在这里遗漏了一些信息。我要删除的条目将从另一个方法传递。然后,我将使用 for 循环来查找条目的索引(如果未找到,则不执行任何操作)。但是我一直不知道如何删除。


首先:我强烈建议使用ArrayList您可以在其中轻松删除和添加项目,而无需更改集合的其余部分(它还有一个toArray()方法)。

话虽这么说,这将是一个仅使用数组来完成此操作的示例解决方案:

public static void main(String[] args) {
    String[] arr = new String[5];
    arr[0] = "aa";
    arr[1] = "bb";
    arr[2] = "cc";
    arr[3] = "dd";
    arr[4] = "ee";

    System.out.println(Arrays.toString(arr));

    int deleteIndex = 2;        
    System.arraycopy(arr, deleteIndex + 1, arr, deleteIndex, arr.length - deleteIndex - 1);
    arr[4] = null;

    System.out.println(Arrays.toString(arr));
}

Output:

[aa、bb、cc、dd、ee]
[aa、bb、dd、ee、空]

这个想法是将元素从索引开始向前移动一位以删除+1。然后您手动将最新的项目设置为null否则它会重复最后一个条目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Java 数组中删除一个条目,以便其他条目保持顺序 的相关文章

随机推荐