有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java删除\删除绑定对象

我有3个哈希表/列表。 在它们内部,我创建了一个类,它通过引用指向所有位置。 现在我想删除它,而不去所有的列表。 可能吗

我看到这里有一个选项,可以从一个列表中获取对象,然后将其设置为null。 不适合我。 如果我改变了一个道具,那么它当然会改变。 我想做的一个小例子:

    Day day = new Day();
    meetingDayList.add(day);
    meetingDayList2.add(day);
    meetingDayList3.add(day);

    Day day2 = meetingDayList.stream().filter(day1 -> day1.getDayDate().isEqual(day.getDayDate())).findAny().get();
    day2 = null; // Or somehow remove it from the memory so it will not show anymore 

从其中一个数组中获取对象,并将其从内存中删除,以便将其从所有列表中删除。 我试图在没有任何运气的情况下推翻和摧毁

谢谢


共 (2) 个答案

  1. # 1 楼答案

    由于您创建的所有对象都引用内存中的同一个对象,因此将其垃圾回收的唯一方法是不再对其进行任何引用

    因此,在您的情况下,您也必须从添加对象的所有列表中删除该对象

    Day day = new Day();
    addToList(day, list1);
    addToList(day, list2);
    addToList(day, list3);
    

    尽管该对象只创建了一次,但它仍存在于三个列表中。您必须将其从所有x列表中删除

    removeFromList(day, list1);
    removeFromList(day, list2);
    removeFromList(day, list3);
    

    在您的具体示例中,它将是:

     Day day2 = ... //obtain day2;
     // for all of your lists
     removeFromList(day2, list_x);
    
  2. # 2 楼答案

    你已经做到了。使用collect而不是findAmy()

    List<MeetingDayList> yourList = meetingDayList.stream().filter(day1 -> day1.getDayDate().isEqual(day.getDayDate())).collect(Collectors.toList());
    

    您将收集不带过滤器数据的列表