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

被更改为最后一个循环值的ArrayLists元素的ArrayLists

蒋承教
2023-03-14

我不明白为什么ArrayList的ArrayList中的“alofCompoundedPrimean”中的每个元素最后都是相同的。因此,尽管ArrayList“TheNewPrimeFactorSal”看起来是正确的,但for循环的每次迭代似乎都将AlofCompoundedPrimean的所有元素更改为最新迭代的元素;也就是说,AlofCompoundedPrimean不是索引唯一的元素,而是将每个元素更改为上次循环迭代的值。另外,我会使用正确的工具来存储一组又一组的集合吗?重要的是,我可以从一个迭代到另一个迭代来计算素因子的个数,所以不能仅仅用可能的新素因子来做一个新的集合。

我发现了这样的链接,它显然可以工作,但似乎不能得到循环,以不更新AlofCompoundedPrimean中的每个元素,使其成为最后一次迭代的值。

public ArrayList<ArrayList<Integer>> CompoundDivisors(
        ArrayList<Set<Integer>> SetofallPrimeFactorsAL) {

    Set<Integer> PrimeFactorsSET;
    ArrayList<Integer> theNewPrimeFactorsAL = new ArrayList<Integer>();
    ArrayList<ArrayList<Integer>> ALofcompoundedPrimeAL = new ArrayList<ArrayList<Integer>>();

    ArrayList<Integer> thePrimeFactorsAL;
    for (int k = 0; k < SetofallPrimeFactorsAL.size(); k++) {
        PrimeFactorsSET = SetofallPrimeFactorsAL.get(k);
        // PrimeFactorsAL takes the set of Prime Factors (in
        // PrimeFactorsSET) and outputs an arraylist of them.
        thePrimeFactorsAL = new ArrayList<Integer>(PrimeFactorsSET);
        // theNewPrimeFactorsAL.addAll just adds all of the new elements to
        // the theNewPrimeFactorsAL ArrayList.
        theNewPrimeFactorsAL.addAll(thePrimeFactorsAL);
        // ALofcompoundedPrimeAL is supposed to add theNewPrimeFactorsAL to
        // each index.
        ALofcompoundedPrimeAL.add(theNewPrimeFactorsAL);
    }
    return (ALofcompoundedPrimeAL);
}

谢谢你的洞察力。

共有1个答案

汪茂
2023-03-14

看来你只是把参考资料抄来抄去。例如,在将TheNewPrimeFactorSal添加到AlofCompoundedPrime之后,在下一个循环中继续将AddAll添加到相同的TheNewPrimeFactorSal。最后,alofCompoundedPrimean包含对同一TheNewPrimeFactorSal的n个引用,该TheNewPrimeFactorSal保存在循环的任何迭代中添加到它的所有元素。

您需要创建新列表才能拥有新列表。

 类似资料:
  • 我的用户可以将条目添加到滚动列表的底部。但是,滚动条在添加条目时不会自动下移,因此用户看不到他们新添加的条目。我如何保持我的滚动条总是在最向下滚动的位置,以显示最新的条目(使用角度5)?

  • 问题内容: 我在做一个简单的文本处理和打印语句时经常遇到这种情况,其中我遍历一个集合,我想对最后一个元素进行特殊情况处理(例如,除最后一种情况外,每个普通元素都将用逗号分隔)。 是否有一些最佳实践习惯用法或优雅的形式,不需要重复代码或在循环中插入if或else。 例如,我有一个要用逗号分隔的列表打印的字符串列表。(“做而做”解决方案已经假定该列表包含2个或更多元素,否则与条件循环更正确一样)。 例

  • 我的程序中有一个错误,使我的循环只读取输入字符串的最后一部分。我想让程序计算一个字符串中每个字符的个数。我不想要答案告诉我如何更有效地存储这些值,而不重复所有内容26次。请回答我在这里提出的问题。抱歉,如果这是一个副本!我只是不知道该说明什么,因为没有明显的错误。

  • 有人能帮忙吗?我正在尝试获取代表动态生成的智能卡(例如633597015500042010)的按钮的最后一个xpath元素,然后单击它。我尝试了以下方法,但仍然找不到解决方法。我打算捕获的按钮的名称是“Select”。 driver.findElement(by.xpath(“//div[@class='select-item']/div)[last()]”).click();

  • 目前控制台打印循环中的所有值,但只需要打印最后一个

  • 问题内容: 我想知道对for循环中的最后一个元素进行特殊处理的最佳方法(更紧凑和“ pythonic”的方法)。有一段代码只应 在 元素 之间 调用,而在最后一个代码中被禁止。 这是我目前的操作方式: 有什么更好的办法吗? 注意:我不希望使用hack之类的东西。 问题答案: 在大多数情况下,使第 一个 迭代成为特殊情况而不是最后一个案例更容易(且更便宜): 这将适用于任何迭代过程,即使对于那些没有