当前位置: 首页 > 知识库问答 >
问题:

从通过从其他列表添加对象而合并的列表中删除对象

拓拔坚
2023-03-14

我正在尝试编写一个代码,从ArrayList的实例中移除某些对象。

体系结构:

    null
    null

代码:

 public interface IRetrieve {

        List<ClassC> getClassCList();

    }

    public class ClassA implements IRetrieve {

        private List<ClassB> classBList;

        public List<ClassB> getClassBList() {
            return classBList;
        }

        public void setClassBList(List<ClassB> classBList) {
            this.classBList = classBList;
        }

        public List<ClassC> getClassCList(){

            List<ClassC> classCList = new ArrayList<>();

            for(ClassB classB: classBList){
                classCList.addAll(classB.getClassCList());
            }

            return classCList;
        }
    }

    public class ClassB {

        private List<ClassC> classCList;

        public List<ClassC> getClassCList() {
            return classCList;
        }

        public void setClassCList(List<ClassC> classCList) {
            this.classCList = classCList;
        }
    }


    public class ClassC {

        private String identifier;

        public String getIdentifier() {
            return identifier;
        }

        public void setIdentifier(String identifier) {
            this.identifier = identifier;
        }
    }

    public class Test {
    public static void main(String[] args) {
        ClassA classA = new ClassA();
        classA.setClassBList(new ArrayList<ClassB>());
        for (int i = 0; i < 5; i++) {
            ClassB classB = new ClassB();
            classB.setClassCList(new ArrayList<ClassC>());
            for (int j = 0; j < 5; j++) {
                ClassC classC = new ClassC();
                classB.getClassCList().add(classC);
            }
            classA.getClassBList().add(classB);
        }

        removeClassCInstances(classA);
    }


    public static void removeClassCInstances(IRetrieve classA){

        //try removing a specific object from the ClassCList
        //using an instance of ClassA

        List<ClassC> classCList = classA.getClassCList();

        List<ClassC> objectsTobeRemoved = new ArrayList<>();

        for(ClassC classC : classCList){
            if(classC.getIdentifier().equals("1")){
                objectsTobeRemoved.add(classC);
            }
        }

        classCList.removeAll(objectsTobeRemoved);
    }
}

共有1个答案

贺飞星
2023-03-14

您可以定义API以移除类A中的对象:

public class ClassA {
   ...
   public void removeAll(List<ClassC> objectsToRemove) {
       for(ClassB classB: classBList){
           classB.getClassCList().removeAll(objectsToRemove);
       }
   }
}
 类似资料:
  • 问题内容: 如果我需要从List中删除一个对象(假设字符串“ abc” linkedList或ArrayList),则可以删除哪一个?(我认为两者都是相同的) ,如果我使用Linkedlist和arraylist,那么时间和空间的复杂度是多少 (我相信两者的时间复杂度都为O(n)相同) 问题答案: 两者都具有相同的时间复杂度-O(n),但是恕我直言,该版本会更快,尤其是在大型列表中,因为当您从数组

  • 我有两个对象列表,它们在两个列表中都有重复名称。我需要从清单2中删除清单1中的所有重复值。 下面是一个场景,类有名称变量,用这个变量需要检查清单1中的重复值并需要删除。 //这是具有3个对象的第一个列表 清单1大小为1 请建议我在Java8与流。

  • 问题内容: 我有一个从mysql数据库附加的对象列表,并包含空格。我希望删除下面的空格,但是im使用的代码不起作用? 问题答案: Python中的字符串是不可变的(这意味着它们的数据无法修改),因此replace方法不会修改字符串-它返回一个新字符串。您可以按以下方式修复代码: 但是,实现目标的更好方法是使用列表理解。例如,以下代码使用以下命令从列表中的每个字符串中删除前导和尾随空格:

  • 假设我有一个雇员对象列表,每个雇员类都有雇员姓名、雇员地址、工资等属性。现在我必须删除名称为“John”和Salary的雇员对象 列表empList=new ArrayList 根据我的理解,若要解雇具有上述情况的员工,我应使用以下代码: 因此,基本上上述代码将从列表中删除所需的Employee对象。如果我的理解正确,请告诉我。 除此之外,请澄清以下几点:1.当我们有数百万条记录时,我们将如何解决

  • 我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?

  • 我有两个数据成员SupID和SupplierName以及一个构造函数的类Supplier,然后我在Form1 load()时将这些对象添加到Supplier列表中。 然后我想在单击发送按钮时通过其新的即时构造函数将lst发送到Form2: 下一步在表格2中,代码如下: 然后我想从bs中删除对象: 问题是,当我从Form2中的bs中删除对象时,Form1中lst中的对象也会受到影响。那么如果我不希望