Java - 有效生成随机整数
问题描述:
我有一个数组列表(数组大小5),每个数组包含从1到17的整数,其中每个整数在每个数组中只出现一次。例如,我列表中的第一个数组是(1,4,2,15,13),我列表中的第二个数组是(2,5,9,13,7),依此类推。Java - 有效生成随机整数
我要生成一个随机数组,这个数组不应该等于一个在我的名单。更确切地说,我不想拥有一个数组(2,5,9,13,7),因为它已经在我的列表中(列表中的第二个,见上面)。有没有解决这个问题的有效方法?非常感谢。
答
从我的意见:转换阵列set
S和添加这些到另一个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
S中的良好特性的两个是顺序并不重要和独特性呢。在这种情况下,这对你非常有帮助;他们有效地做到了。 Java的hashset
实现是O(1)add
和contains
- 您将使用的两种方法。
你有什么到目前为止已经试过? – Andreas
这听起来像是'set'的集合。假设'[1,2,3,4,5] = [5,4,3,2,1]'。 java中的'set's保证每个放置在它们中的元素只出现一次。 – lilott8
该假设是正确的([1,2,3,4,5] = [5,4,3,2,1])。所以,如果我找到了你,我必须将每个数组打包到一个集合中,然后我将创建一个新数组并将其与我的一组数据进行比较 - 是吗? – Ferit