如何根据特定条件从java中删除数组中的对象?

时间:2011-07-30 15:09:40

标签: java arrays

:) 我有

int[] code = new int[10];

它具有以下值:

code[0] = 1234;
code[1] = 2222;
code[2] = 2121;
code[3] = 4321;
code[4] = 3333;
code[5] = 2356;

这种情况下的代码是指文件的序列号。 用户可以输入文件的代码来删除该特定文件。

假设用户输入3333作为要删除的代码。 代码[4] = 3333将被删除,代码[5] = 2356将向上移动以取代它。见下文......

code[0] = 1234;
code[1] = 2222;
code[2] = 2121;
code[3] = 4321;
code[4] = 2356;

我该如何解决这个问题?

我读到使用数组列表会让我的生活更轻松。 但是,我被告知要使用一个数组。 有什么帮助吗? :)

3 个答案:

答案 0 :(得分:0)

这根本不可能。数组具有固定的大小,因此您必须创建第二个数组,其大小减少1并复制除要保留的值之外的所有值。或者分别跟踪数组的“工作大小”,此时您开始重新实现ArrayList

答案 1 :(得分:0)

您可以简单地将值设置为不可能的值(例如-1以节省使用System.arrayCopy或类似物移动和调整数组的麻烦。这当然假设目标是要使功能正常工作。如果“移动”元素是一个绝对要求,你必须创建一个新数组,如此处另一条评论所述。

答案 2 :(得分:0)

  

我该如何解决这个问题?

分配一个新数组,并将要保留的所有值从现有数组复制到新数组。

你也可以在适当的位置更新数组,在数组末尾填充一些特殊值的“漏洞”,这些值不能成为合法代码。

由于这是一个“听起来像家庭作业”的问题,我将让你弄清楚如何编码。 (这很简单。只需要一个循环,一个测试,以及对第二个索引的一些小心操作。)