java - 根据条件从ArrayList中随机获取n个元素,并将其从原始列表中删除

标签 java arrays arraylist

获取列表: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/

相关文章:

java - 哪些语言可以很好地替代 Java?

java - 字符串与字符串数组的元素之间的比较

javascript - 从数组中删除逗号

Java 用嵌套逗号拆分字符串

java - ArrayList<Number> 是什么意思?

java - Espresso 测试android中的多场比赛

java - 告诉 java 要听哪个键盘

php - 表单 - 从 Controller 传递数组到 View - PHP - Laravel

java - 我如何允许用户添加、编辑、删除列表组?如教室、小屋等

java - RecyclerView列表不正确显示ArrayList