2017-08-02 14 views
-4

私は配列のリスト(配列サイズ5)を持っています。各配列は1から17までの整数を含みます。たとえば、私のリストの最初の配列は(1、4、2、15、13)、私のリストの2番目の配列は(2,5,9,13,7)です。Java - ランダムな整数を効率的に生成

私はランダムな配列を生成したいと思います。この配列は私のリストのものと同じであってはなりません。もっと正確に言えば、私のリストに既にあるので配列(2,5,9,13,7)を望んでいません(私のリストの2番目は上記参照)。これを解決する効率的な方法はありますか?どうもありがとう。

+1

これまでに何を試しましたか? – Andreas

+2

これは、 'set'の' set'がうまくいくように思えます。 '[1,2,3,4,5] = [5,4,3,2,1]と仮定します。 Javaの 'Set'は、それらに置かれた各要素が一度だけ現れることを保証します。 – lilott8

+0

仮定は正しいです([1,2,3,4,5] = [5,4,3,2,1])。だから、もし私があなたにぴったりなのであれば、各アレイを一組にして、新しいアレイを作り、それを私のセットの一つと比較するつもりです。そうですか? – Ferit

答えて

1

私のコメントから:配列をsetに変換し、別の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; 
} 

二つは順番は関係ないということであり、その独自性はありません。この場合、両方ともあなたを大いに助けます。彼らはそれを効率的に行う。 Javaのhashsetの実装は、addcontainsでO(1) - 使用する2つの方法です。

関連する問題