我有一个数组列表(数组大小为5),每个数组包含1到17的整数,其中每个整数在每个数组中只出现一次。例如,我列表中的第一个数组是(1,4,2,15,13),我列表中的第二个数组是(2,5,9,13,7),依此类推。
我想生成一个随机数组,这个数组不应该等于我列表中的数组。更确切地说,我不希望有一个数组(2,5,9,13,7),因为它已经在我的列表中(我的列表中的第二个,见上文)。有没有有效的方法来解决这个问题?非常感谢。
答案 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
- 您将使用的两种方法。