【问题标题】:Sampling and removing random elements from a list从列表中采样和删除随机元素
【发布时间】:2017-10-11 16:47:59
【问题描述】:

我编写了一个随机抽样列表的一部分的方法。代码如下:

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);
}

该方法将原始列表、随机数生成器和要采样的项目数作为输入。

现在我想从原始列表中删除选定的元素(称为图像)。如何做到这一点?

【问题讨论】:

标签: java list random shuffle


【解决方案1】:

在旧列表中使用 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;
}

【讨论】:

  • 这绝对是最简单的解决方案,但性能不佳。
猜你喜欢
  • 2017-12-06
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2014-03-06
相关资源
最近更新 更多