【发布时间】:2014-03-12 21:39:19
【问题描述】:
我有 python 背景,所以请允许我在 python 中使用我的代码。
在 Java (Android) 中有一个 arrayList<customObject>。在每个customObject 中对应一个布尔值(用于可见性)。
我希望尽可能高效地执行操作来检查可见性布尔值。在 python 中,我会创建一个生成器。
假设我的架构是:
list = [{"item": customObject, "visible": boolean}, {...}, {...}]
visible_matches = [x for x in list if x['visible']]
for match in visible_matches:
dosomething(match)
或替代架构:
list = [[ customObject, boolean], [...], [...]]
visible_matches = [x for x in list if x[1]]
我如何在 Java 中执行相同的操作?
arrayList<arrayList<boolean,customObject>> 或
arrayList< SimpleEntry<"item",customObject>, SimpleEntry<"visible",boolean> >
对我来说是一个非常肮脏的解决方案。有没有更简单的方法来实现这一点?
【问题讨论】:
-
您的 Python 代码示例中没有生成器...
-
@brunodesthuilliers
[x for x in list if x['visible']]是一个生成器。 -
@John 不!这是一个列表理解!在 python 中,生成器意味着生成器表达式(not 列表理解)或函数生成器(包含
yield的函数)。 -
@Bakuriu 你完全正确。当我第一次阅读它时,我阅读了
list(x for x in list if x['visible'])。现在我看到没有清单。这是()和[]之间的区别。很抱歉!
标签: java android python arraylist