2017-10-11 16 views
0

リストの一部をランダムにサンプリングする方法を書いています。コードは以下の通りである。ランダムな要素をリストからサンプリングして削除する

private List<String> selectImages(List<String> images, Random rand, int num) { 
    List<String> copy = new LinkedList<String>(images); 
    Collections.shuffle(copy,rand); 
    return copy.subList(0, num); 
} 

このメソッドは、元のリスト、乱数ジェネレータ、およびサンプルする項目の数を入力として取ります。

ここで、元のリスト(画像)から選択した要素を削除します。これはどうすればできますか?

+4

〔のremoveAll()](https://docs.oracle.com/javase/7/docs/api/java/util/List.html#removeAll(のjava.util.Collection)) –

答えて

3

引数がサブサンプルである古いリストでremoveAllを使用します。ある

private List<String> selectImages(List<String> images, Random rand, int num) { 
    List<String> copy = new LinkedList<String>(images); 
    Collections.shuffle(copy,rand); 
    List<String> sample = copy.subList(0, num); 
    images.removeAll(sample); 
    return sample; 
} 
+0

確かに最も簡単な解決策ですが、パフォーマンスにはあまり適していません。 – Andreas

関連する問題