【发布时间】:2017-09-01 19:30:43
【问题描述】:
假设我有一个具有name、hair color 和eye color 等属性的人员对象。我有以下数组Person[] people,其中包含人员对象的实例。
我知道我可以使用
获得Person 对象之一的 name 属性
// create a new instance of Person
Person george = new Person('george','brown','blue');
// <<< make a people array that contains the george instance here... >>>
// access the name property
String georgesName = people[0].name;
但是如果我想在不使用索引的情况下访问每个人的name 属性怎么办?例如,要创建一个仅包含名称或头发颜色的数组或列表?我是否必须手动遍历我的 people 数组?或者在 Java 中有什么很酷的东西,比如 String[] peopleNames = people.name?
【问题讨论】:
-
几乎你必须迭代。您可以使用流,但对于小型列表,它们效率不高。
-
您使用的是命令式语言。因此,显式迭代是可行的方法。如果您不喜欢编写循环,请使用函数式语言,例如 Scala。在那里,您可以使用简单的单线并拥有它。
-
您能否详细说明两者之间的区别,或许可以作为答案?
-
@MatthiasFax,如果使用 Java 8 的流式 API,则无需显式迭代,这在本质上是函数式的。
-
@MatthiasFax,我同意你的观点,流式 API 是围绕核心语言而不是自下而上构建的,但它确实允许你使用函数式习语,因此不必显式迭代. “显式迭代”是我要解决的唯一问题。