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

创建列表深度副本

郑晨
2023-03-14

我不确定我的问题是出在代码的深度复制部分,还是我在将元素添加到原始列表时犯了错误。到目前为止我所掌握的是:

public class OwnedPiggyBank 
{
    List<Coin> bank;
    private Owner owner;


    public OwnedPiggyBank(Owner owner) 
    {
        this.owner = owner;
        bank = new ArrayList<>();
    }

    public void add(List<Coin> coins) 
    {
        bank.addAll(coins);
    }

    public List<Coin> deepCopy() 
    {
        List<Coin> coins = new ArrayList<>();

        for (Coin c : bank)
        {
            coins.add(new Coin(c));
        }

        return coins;
    }

...其中与此相关联的测试用例是:

public void test() 
{
    OwnedPiggyBank b = new OwnedPiggyBank("Lola");
    List<Coin> coins = new ArrayList<Coin>(Arrays.asList(Coin.PENNY, Coin.LOONIE, Coin.TOONIE));
    b.add(coins);
    OwnedPiggyBank c = new OwnedPiggyBank(b);
    assertEquals(coins, c.deepCopy());
}

共有1个答案

金霄
2023-03-14

在构造函数Public OwnedPiggyBank(所有者所有者)中,您有

bank = new ArrayList<>();

因此,在deepcopybank中,是空的

assertEquals(coins, b.deepCopy());

更有意义

public OwnedPiggyBank(OwnedPiggyBank owner) 
{
    this.owner = owner;
    bank = owner.deepCopy();
}

 类似资料:
  • 我想列个这样的单子。请帮帮我.谢了。

  • 问题内容: 与列表变平相反。 给定一个列表和一个长度为n的列表,返回一个长度为n的子列表的列表。 一个例子: 如果列表是: n是: 返回: 有没有一种更雄辩/简洁的方法? 顺便说一句,将列表追加到列表时(在上面的上下文中)是首选: 要么: 鉴于(根据Summerfeild的“ Python 3编程”),它们是一样的吗? 谢谢。 问题答案: 这样的列表列表可以使用列表理解来构造: 还有石斑鱼成语:

  • 因此,我有一个基本的树结构,该结构由树节点组成,该树节点链接到具有父级和子级引用的其他树节点。我想创建一个方法,该方法返回一个 Stream,该流从叶节点流式传输到根节点或从根到叶。我已经实现了这个,但我正在寻找一种创建最少对象的解决方案。最好没有。这是我的代码: 这很好,但我的“问题”是,为每个流调用创建了很多对象。 StreamSupport.stream 创建新的 ReferencePipe

  • 我现有的使用阻止队列的代码创建了一个阻止队列列表(如私有列表 任何帮助将不胜感激。

  • 对于C#中泛型列表的泛型列表的概念,我似乎有点难以理解。我认为问题源于

  • 我试图用N深度展平ArrayList。为此,我尝试使用流API的flapMap方法。我能得到它。但是我必须根据列表的数量重复使用flatMap()方法。如果再使用一个flatMap()方法,它会显示编译时错误。是否有任何方法可以动态地完成它。 这是我使用的代码: