【问题标题】:Removing element from array in java, without import从java中的数组中删除元素,而不导入
【发布时间】:2014-01-19 11:01:16
【问题描述】:

我正在尝试学习 Java,同时玩弄它,我的一个朋友声称可以从数组中删除一个元素,只需几行,而无需导入任何东西。

我一直在思考如何完成上述程序,这就是我想出的。

public void removeStudent(Student student) {
    for (int i = 0; i < list.length; i++) {
        if(list[i].getID() == student.getID()) {
            for (int j = i; j < list.length; j++) {
                int y = j;
                list[i] = list[y++];
                studentsThusFar--;
            }
        }
    }

}

我的想法是我可以通过将所有对象向上移动一个空格来删除学生对象。但是,如果数组中的最后一个对象被删除,这不会分崩离析吗?

请保持您的答案准确,并使用初学者可以理解的语言。

【问题讨论】:

  • 你知道数组的长度...查看剩余元素的数量...检查要删除的元素是否是最后一个..如果是,删除后什么都不做.否则,从位置(称为索引而不是空间:))开始将数据向上移动一个索引/单元格......你的方法是正确的。
  • @TheLostMind 那么我将如何删除所述数组中的最后一个元素?在我将所有内容都向上移动之后,或者发现所需的删除是最后一个元素之后?

标签: java arrays import


【解决方案1】:

我只需将所有项目复制到一个新数组中,要删除的项目除外。然后返回新数组。

public void removeStudent(Student student) {
    int[] new_list = new Student[list.length-1];
    int j = 0;
    for (int i = 0; i < list.length; i++) {
        if(list[i].getID() != student.getID()) {
            new_list[j] = list[i];
            j++;
        }
    }
    list = new_list; //Assuming list is some global
}

【讨论】:

  • 功能性,毫无疑问,但正如你所见,我的方法是无效的,所以我想修改现有表而不返回新表......不过还是谢谢!
  • 然后用new_list替换变量列表...更新答案
  • @Chiel92 - 你不能从数组中删除一个元素。你只需将它设置为 null(在 o 对象的情况下)和 0 用于 int (在你的情况下)等等......跨度>
  • @Chiel92 完美,现在我明白了!非常感谢!
  • @TheLostMind 我不知道。今天学到了新东西。谢谢你,伙计。
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 2010-10-13
  • 2016-05-17
  • 2019-09-03
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多