2017-10-11 89 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