获取列表:List<MyObject> objects = new ArrayList<>();
,其中每个MyObject
有一个字段String myString;
.
如何“弹出”(检索和删除)n
列表中的随机元素,其中 myString == "myString"
?
编辑:
我已经成功地从列表中删除了一个随机元素,我可以对其进行迭代 n
次,但这似乎效率相当低。我的代码中也没有比较方面。
List<MyObject> objects = new ArrayList<>();
MyObject object = objects.get(Math.random() * objects.size());
objects.remove(object);
最佳答案
List<MyObject> filtered = objects.stream()
.filter(o -> o.getMyString().equals("myString"))
.collect(Collectors.toList());
Collections.shuffle(filtered);
List randomList = filtered.subList(0, n);
objects.removeAll(randomList);
关于java - 根据条件从ArrayList中随机获取n个元素,并将其从原始列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56391414/