2015-12-21 27 views
1

我正在寻找一个简单的方法,而不是while/for循环,用于基于包含唯一值的对象从ArrayList<Object>中过滤出一组对象。根据对象字段从ArrayList <Object>中过滤掉对象?

例如,我有对象的列表作为

[Status [status=new], Status [status=closed], Status [status=new], Status [status=closed], Status [status=new], Status [status=closed], Status [status=new], Status [status=closed], Status [status=new], Status [status=closed]]. 

我需要有状态值"new"成一个列表来compare.No需要一个已经closed对象的对象。

+0

后的你做了什么一些代码。请更好地解释你自己。 – Leonardo

+0

使用Set <>而不是ArrayList – Mohit

回答

3

用于过滤集合的较少且可读代码的独特方式是使用java 8 lambda表达式

不幸的是,java8并不支持Android,但....你可以使用retrolambda。 如果你需要使用Stream API,你可以试试这个插件Lightweight-Stream-API。 (该STRAM API不支持retrolambda)

在这种情况下:

List<Person> newList = Stream.of(personList).filter(p -> p.getAge() > 18).collect(Collectors.toList()); 
+0

其中p来自filter(p - > ..)? – SachinS

+0

在声明中'filter(p - > p.getAge()> 18)'p实际声明自己 – eriuzo