【发布时间】:2016-06-19 07:21:48
【问题描述】:
我想根据某个属性在列表中查找对象。
例如,假设我有一个此类的对象列表:
class Person {
private String name;
private String id;
}
我知道我可以通过以下方式获取列表中的所有人的姓名:
Collection<String> names = CollectionUtils.collect(
personList,
TransformerUtils.invokerTransformer("getName"));
但我想做的是获取名称为"Nick" 的Person 对象的列表。我没有 Java 8。
【问题讨论】:
-
简单地遍历列表并检查每个名称有什么问题?
-
使用 for 语句迭代列表,在内部检查名称是否等于 'Nick',如果是,则将对象添加到另一个列表中
-
for 循环和 if 语句始终存在。
-
使用 java 8 流式 API 中的过滤器会更好,但性能可能不如 for 外观。类似
List<Person> nicks = personList.stream.filter(person-> "Nick".equals(person.getName()).collect(Collectors.toList()) -
当您可以简单地遍历列表并检查名称是否为“Nick”时,为什么要使用集合来执行此操作。
标签: java list collections