Java 快速调用以生成包含从0到N的数字的数组

Java 快速调用以生成包含从0到N的数字的数组,java,Java,这里有一个简单的问题——主要是关于API的 我想以随机顺序遍历数组 很容易做到: 用数字0到N填充一个列表 使用集合对列表进行洗牌。洗牌 使用这个无序列表来指导我的数组迭代 但是,我想知道步骤1(生成从0到N的数字列表)是否存在于预先编写的代码中 例如,它是否是guava的XYZ类中的一种方便方法???Java不允许您自动填充值。有关在java中填充数组的方法,请参见此问题 “Java不允许您自动填充值。有关在java中填充数组的方法,请参见此问题 “注意到你特别强调“快速”,我无法想象会有比这

这里有一个简单的问题——主要是关于API的

我想以随机顺序遍历数组

很容易做到:

  • 用数字0到N填充一个列表
  • 使用集合对列表进行洗牌。洗牌
  • 使用这个无序列表来指导我的数组迭代
  • 但是,我想知道步骤1(生成从0到N的数字列表)是否存在于预先编写的代码中


    例如,它是否是guava的XYZ类中的一种方便方法???

    Java不允许您自动填充值。有关在java中填充数组的方法,请参见此问题


    Java不允许您自动填充值。有关在java中填充数组的方法,请参见此问题


    注意到你特别强调“快速”,我无法想象会有比这更快的事情发生

    List<Integer> = new ArrayList<Integer>(range);
    
    List=newarraylist(范围);
    

    然后迭代并填充每个条目。请注意,我设置容量是为了避免列表在封面下调整大小。

    注意到您特别强调“快速”,我无法想象会比

    List<Integer> = new ArrayList<Integer>(range);
    
    List=newarraylist(范围);
    

    然后迭代并填充每个条目。请注意,我设置容量是为了避免列表在封面下调整大小。

    番石榴中最接近的东西是

    ContiguousSet.create(Range.closedOpen(0, n), DiscreteDomains.integers())
    

    …但是,坦率地说,仅仅为自己编写
    循环可能更具可读性。

    番石榴中最接近的东西是

    ContiguousSet.create(Range.closedOpen(0, n), DiscreteDomains.integers())
    

    …但是,坦率地说,仅仅为自己编写
    循环可能更具可读性。

    如果您跳过步骤1,立即进行疏解,我认为您将获得最快的解决方案

    int range = 1000;
    List<Integer> arr = new ArrayList<Integer>(range);
    for(int i=0;i<range;i++) {
        arr.add((int)(Math.random()*i), new Integer(i));
    }
    
    int范围=1000;
    List arr=新阵列列表(范围);
    
    对于(int i=0;i如果你跳过步骤1,立即进行刷毛,我认为你会得到最快的解决方案

    int range = 1000;
    List<Integer> arr = new ArrayList<Integer>(range);
    for(int i=0;i<range;i++) {
        arr.add((int)(Math.random()*i), new Integer(i));
    }
    
    int范围=1000;
    List arr=新阵列列表(范围);
    
    对于(int i=0;i您可能希望查看
    apachecommons
    ,在许多其他有用的函数中,该函数在
    RandomDataGenerator
    类中实现该方法


    这显然比填充
    列表
    数组
    的方法要大得多,但是commons是真正强大的库,它为数学计算提供了更好的方法。

    您可能想查看
    Apache commons
    ,在许多其他有用的函数中,它实现了met
    RandomDataGenerator
    类中的hod


    这显然比填充
    列表
    数组
    的方法要大得多,但commons是真正强大的库,它为数学计算提供了更好的方法。

    编写自己的方法来实现这一点很容易。同意,但像Doubles这样的小方便方法。比较(double d1,double d2)使代码更具可读性。如果我可以替换for循环并了解一批可能有用的方便方法,那将是非常好的。编写自己的方法来实现这一点非常简单。同意,但像double这样的小方便方法。比较(double d1,double d2)使代码更具可读性。如果我能替换for循环并了解一批可能有用的方便方法,那将是非常棒的。Thx。番石榴中的小东西确实很有用。这就是我问的部分原因——以防有更多的小“可读性方法”我不知道的是,有些情况下,番石榴潜伏者可能会认为是“反可读的方法”,我怀疑这可能是一个这样的案例。thux。番石榴中的小东西确实是有帮助的。这就是我问的原因的一部分-如果有另外一批“可读性方法”的话。我不知道。有些情况下,番石榴开发人员可能会认为“反可读的方法”,我怀疑这可能是一个这样的例子。