Java - 有效地生成随机整数

时间:2017-08-02 22:16:18

标签: java arrays random integer

我有一个数组列表(数组大小为5),每个数组包含1到17的整数,其中每个整数在每个数组中只出现一次。例如,我列表中的第一个数组是(1,4,2,15,13),我列表中的第二个数组是(2,5,9,13,7),依此类推。

我想生成一个随机数组,这个数组不应该等于我列表中的数组。更确切地说,我不希望有一个数组(2,5,9,13,7),因为它已经在我的列表中(我的列表中的第二个,见上文)。有没有有效的方法来解决这个问题?非常感谢。

1 个答案:

答案 0 :(得分:1)

从我的评论中:将数组转换为set并将其添加到另一个set。即:

Set<Set<Integer>> storage = new HashSet<>();

public void doSomething() {
     // loop or do something interesting.
     storage.add(getNextGeneratedSet());
}

public Set<Integer> getNextGeneratedSet() {
     Set<Integer> result = new HashSet<>();
     for(int i : getNextRandomInt()) {
         result.add(i);
     }
     return result;
}

set的两个不错的属性是顺序无关紧要,而且唯一性也是如此。在这种情况下,这两者都对你有很大的帮助;他们有效地做到了。 Java的hashset实现是add上的O(1)和contains - 您将使用的两种方法。

相关问题