java - 是否可以删除数组中的对象而不是其索引? ( java )

标签 java arrays

当我尝试 self 回答这个问题时,我只能找到有关从数组中删除项目的其他问题,以便删除对象之后的项目在索引中向下移动 1。

在下面的代码中,我有两个数组保存 SomeObject 类(带有 name 属性):SomeObject_ONE 和 SomeObject_TWO。

下面我将一个对象“some-object”放入第一个数组中,然后将第二个数组设置为等于第一个数组中的对象。我仍然可以通过更改第二个数组中对象的属性(第三个缩进)来更改第一个数组中对象的属性。

但是,当我尝试将第二个数组中的对象设置为 null 时,它不会将第一个数组设置为 null,而是仅删除第二个数组中对象的索引(第四个缩进)。

有没有办法删除数组中的对象而不是删除其数组索引?

谢谢。

    SomeObject[] ObjectArray_ONE = new SomeObject[10];
    SomeObject[] ObjectArray_TWO = new SomeObject[10];

    ObjectArray_ONE[0] = new SomeObject();
    ObjectArray_TWO[0] = ObjectArray_ONE[0];

    System.out.println(ObjectArray_ONE[0].name+" outputs default name");
    ObjectArray_TWO[0].name = "Name changed from OA2";
    System.out.println(ObjectArray_ONE[0].name+" outputs Name changed from OA2");

    System.out.println("Should not be null        : "+ObjectArray_ONE[0]);
    ObjectArray_TWO[0] = null;
    System.out.println("Should be null            : "+ObjectArray_ONE[0]);
    ObjectArray_ONE[0] = null;
    System.out.println("Only now is it really null: "+ObjectArray_ONE[0]);

最佳答案

这是按引用传递按值传递

Java 是按值传递的,在这种情况下,值是一个引用。这是一个微妙的区别。这里的意思是,如果你改变一处引用的对象,那么它到处都会改变。但它不会改变引用。如果我将引用设置为等于其他值,则原始对象不会改变。

关于java - 是否可以删除数组中的对象而不是其索引? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936566/

相关文章:

java - java中向数组添加新元素

javascript - ReactFire - 将 Firebase 绑定(bind)到 React 状态时获取 'Objects are not valid as a React child'

java - Android Support v4 22.2.0 的 Proguard 配置

java - 如何通过 POST 在 Angular/Spring 中注销

arrays - perl6 数组赋值 : pointer or copy?

javascript - JS 否则/否则如果

c++ - 为什么这段将 std::array 转换为 std::string 的代码不显示任何内容?

javascript - 将对象数组转换为基元数组(从对象属性中提取)

java - EventHandler 行为怪异并且颜色补丁怪异

java - 我不确定为什么要为 codechef 获取 TLE