2015-12-21 97 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