如何跟踪java中相互引用的对象列表?

o2g1uqev  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(357)

我正在编写一个java应用程序,它有创建契约的用户。合同中有可添加到合同中的支持用户列表。创建此合同的用户不在支持者列表中。支持用户可以帮助用户的初始创建者执行合同,例如“60天内不喝酒”。我有一个函数可以在user类中显示合同列表。我还可以将用户添加到合同中的列表中。在编写viewsupportedcontracts()函数时,我应该如何在以后考虑最佳内存问题?我将在主类中使用user对象。

package core;

import java.util.ArrayList;
import java.util.List;

public class Contract {
    private boolean termsAndAgreementSigned = false;
    private List<User> supporters = new ArrayList<User>();

    public Contract()
    {

    }

    public void setTermsAndAgreementSigned(boolean termsAndAgreementSigned) {
        this.termsAndAgreementSigned = termsAndAgreementSigned;
    }

    public boolean isTermsAndAgreementSigned() {
        return termsAndAgreementSigned;
    }

    public void addSupporter(User user)
    {
        supporters.add(user);
    }

    public void viewSupporters()
    {
        System.out.println("These are the supporters");
    }

}
package core;

import java.util.ArrayList;
import java.util.List;

public class User {
    private List<Contract> contracts = new ArrayList<Contract>();

    public User()
    {

    }

    public void addContract(Contract contract) throws Exception {
        if(contract.isTermsAndAgreementSigned() == true)
            contracts.add(contract);
    }

    public List<Contract> getContracts() throws Exception {
        return contracts;
    }

    public void viewSupportedContracts() {
        // TODO Auto-generated method stub

    }

}
sdnqo3pr

sdnqo3pr1#

似乎你的代码添加与用户的合同是非常有效的内存方面,似乎对我来说,你是在寻找一种方式来查看合同。我的方法是在contract类中实现一个tostring()方法,或者在列表中调用tostring,或者编写一个for循环,在新行中打印每个contract

public class Contract {
    public String toString() {
        return supporters.toString() + " users support you!";
    }
}

public class User {
    public String toString() {
        return "Create generated user text here";
    }

    public void viewSupportedContracts() {
        System.out.println(contracts.toString());        
    }
}

public void viewSupportedContracts() {
    for(Contract contract: contracts) {
        System.out.println(contract.toString());
    }        
}

相关问题