如何在Java中删除数组元素 附已实现添加功能的现有代码
Java数组元素删除实现方案
你现有代码中使用ArrayList动态集合存储元素,比原生固定长度数组实现删除操作简便很多,直接调用ArrayList自带的删除方法即可,不需要手动操作数组偏移。具体修改步骤如下:
1 调整集合作用域
你目前把List<String> list定义在添加功能的分支内,删除、修改分支无法访问同一个集合,需要把集合定义提到管理员登录成功的位置,让所有管理员操作共享同一个图书列表:
if(pass.equals("best")) { System.out.println("Welcome Admin. Which option would you like to choose?"); System.out.println("1. Add"); System.out.println("2. Delete"); System.out.println("3. Modify"); // 把集合定义移到这里,所有管理功能共用同一个列表 List<String> list = new ArrayList<String>(); int choice = in.nextInt(); in.nextLine();
2 补充删除分支逻辑
在choice == 2的分支中添加删除逻辑,支持按元素名称或者下标删除:
} else if (choice == 2) { if (list.isEmpty()) { System.out.println("当前列表为空,无元素可删除"); return; } System.out.println("当前列表内容:" + list); System.out.println("请输入要删除的图书名称:"); String delName = in.nextLine(); // 按元素值删除,返回布尔值判断是否删除成功 boolean isDel = list.remove(delName); if (isDel) { System.out.println("删除成功,当前列表:" + list); // 同步更新数组 String[] arr = list.toArray(new String[0]); System.out.println("对应数组内容:" + Arrays.toString(arr)); } else { System.out.println("未找到对应图书,删除失败"); } }
3 现有代码优化提示
- 你之前在添加功能分支内直接调用
in.close()关闭输入流,如果后续操作删除、修改功能会触发流关闭异常,需要把in.close()移动到main方法的最后一行 - 如果需要用原生Java数组实现删除(不借助ArrayList),可以按以下步骤操作:
- 遍历数组找到要删除元素的下标
- 创建长度为原数组长度-1的新数组
- 把原数组中除了目标下标之外的元素全部复制到新数组
- 把新数组赋值给原数组变量即可
内容的提问来源于stack exchange,提问作者user17567912
相关产品推荐
相关产品推荐

