Java 从自定义arraylist获取具有相同标志的所有项的列表

Java 从自定义arraylist获取具有相同标志的所有项的列表,java,android,arraylist,Java,Android,Arraylist,1) 自定义对象的ArrayList示例:ArrayListArrayList 2) 具有布尔标志和人名的CustomModel。 3) arrayList共有10个元素,其中4个项目具有true布尔标志,其余6个项目具有false标志 4) 现在我想要::new ArrayList列出所有具有true标志的项 注意:不使用for和if循环是可能的?您无法摆脱循环,因为这将帮助您迭代列表,但有一种简单快速的方法可以做到这一点。请查找以下代码: arrayList.parallerStream()

1) 自定义对象的ArrayList示例:
ArrayList
ArrayList
2) 具有布尔标志和人名的CustomModel。
3) arrayList共有10个元素,其中4个项目具有true布尔标志,其余6个项目具有false标志

4) 现在我想要::new ArrayList列出所有具有true标志的项


注意:不使用for和if循环是可能的?

您无法摆脱循环,因为这将帮助您迭代列表,但有一种简单快速的方法可以做到这一点。请查找以下代码:

arrayList.parallerStream().filter(p->p.flag).collect(Collectors.toList())

如果您使用的是Java8,那么就可以使用streams

注意:流在内部使用迭代器和循环

ArrayList<CustomModel> arrayList =
          youArrayList.stream().filter(o -> o.isTrue()).collect(Collectors.toList());
ArrayList ArrayList=
youArrayList.stream().filter(o->o.isTrue()).collect(Collectors.toList());

这里
o
是您的
CustomModel
,因此您需要调用要筛选的特定函数。

如何在没有循环的情况下遍历数组?是否可以使用for循环以外的其他类型的循环?如何创建初始列表?也许你可以直接创建两个列表,去掉布尔值?我们可以使用,int-executions=Collections.frequency(ArrayList,new-CustomModel(true)”,从ArrayList获得相同事件的总计数;它将返回具有true标志(即4)的项目总数,但我希望这4次出现的所有数据都以相同的自定义数组列表的形式出现。谢谢您的解决方案。但是如果CustomModel下还有一个自定义对象类,并希望用它检查标志,则(示例::
ArrayList ArrayList=myArrayList.stream().filter(o->o.ChildModel.isTrueFlag.collect(Collectors.toList());
)您可以为子类添加getter,并像
o.getChildClass().isTrue()一样使用它。