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

在toString方法中返回ArrayList时,置换列表重复自身

山翼
2023-03-14

*已解决:未清除ArrayList ebwteen调用,因此列表不断增加。我加了烫发。在nextPermutation()中的第二个for循环之前清除(),问题解决了!感谢所有帮助过我的人。

在toString方法中返回ArrayList时遇到问题。我的任务是从数字1-10中生成10个排列列表。驱动程序中调用了10次方法nextPermutation。

我希望我的输出如下所示:

List 1: [4 6 8 1 9 7 10 5 3 2]
List 2: [6 8 1 7 3 4 9 10 5 2]

等等..

相反,每个新列表在添加新排列的同时保留上一个列表的排列,所以我得到了这个:

List 1:  [6, 2, 3, 9, 4, 5, 10, 8, 7, 1]
List 2:  [6, 2, 3, 9, 4, 5, 10, 8, 7, 1, 3, 7, 2, 9, 1, 10, 6, 4, 8, 5]

这是我的代码:

import java.util.*;

public class PermutationGenerator {
    Random rand;
    ArrayList<Integer> perm = new ArrayList<Integer>();

    public PermutationGenerator(int s) {
        rand = new Random(s);
    }

    public void nextPermutation() {
        ArrayList<Integer> myArrayList = new ArrayList<Integer>();
        for (int i = 1; i <= 10; i++) {
            myArrayList.add(i);
        }

        for (int i = 1; i <= 10; i++) {
            int a = rand.nextInt(myArrayList.size());
            perm.add(myArrayList.get(a));
            myArrayList.remove(a);
        }
    }

    public final String toString() {
        return perm.toString();
    }
}

通过将void nextPermutation()方法更改为ArrayList,在方法内部返回perm,并从字段中取出ArrayList并将其放入nextPermutation方法中,我能够获得正确的输出。然而,对于赋值,我需要nextPermutation为void,我还需要一个toString方法。

所以,我的问题是,如何在toString中返回perm并获得每个列表的一个排列?

共有1个答案

施飞驰
2023-03-14

您需要在每次打印后和下一次调用nextPerMutation()之前清除perm,或者让nextPerMutation()创建并返回一个列表,该列表被打印然后扔掉。

如果你继续添加到同一个列表中,它只会不断增长。

 类似资料:
  • 当我在添加事件后简单地在calendar对象上使用它时,它就像预期的那样工作: 首次打印输出: 活动名称:生日活动地点:酒店日期:2020-04-12售票:100票价:100头顶费:1000活动名称:复活节活动地点:公园日期:2020-07-28售票:200票价:200头顶费:2000 活动名称:圣诞节活动地点:车库日期:2020-03-28售票:300票价:300头顶费:3000 [名称:圣诞节

  • 我目前正在android studio中开发一个应用程序,我有一个用于存储图像URL的字符串数组列表。在for循环中,我每次都会向ArrayList添加一个值,但在for循环之后,ArrayList似乎会重新设置自己。 谁能给我解释一下为什么它会自动复位?

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 我这样做对吗?我生成了toString()。

  • 问题内容: 该方法返回的表示形式。这里返回的对象是数组支持的,但不是对象。 我正在寻找对象返回值与对象之间的差异- 一种快速的来源,可以告诉它们而无需深入研究代码。 TIA。 问题答案: 当您调用Arrays.asList时,它不会返回。它返回一个由原始源数组支持的固定大小列表。换句话说,它是使用Java的基于集合的API公开的数组的视图。 您不能向其中添加元素,也不能从中删除元素。如果您尝试从中