我有一个对象列表,例如 Person 依次有几个列表,其中很少有通用属性,如下所示
List<Address> address1 = List.of("1","2","5","6")
List<Address> address2 = List.of("3","4")
List<Email> email1 = List.of("[email protected]","[email protected]", "[email protected]")
List<Email> email2 = List.of("[email protected]", "[email protected]")
Person person1 = new Person("smith",22, address1, email1)
Person person2 = new Person("Alex",30, address2, email2)
List<Person> person = List.of(person1, person2)
我想迭代人员列表并获取地址和电子邮件对象的其他两个嵌套列表大小的大小。在上面的例子中,地址大小=6,电子邮件=5,我想返回
是否有可能在单次迭代中在Java流中实现这一点?
是否可以在单次迭代中在 Java 流中实现此目的?
如果您指的是一个循环或类似的构造,是的。如果你的意思是一些 O(1) 解决方案,不!无论是命令式还是声明式完成,都会在某个地方出现迭代。最简单的方法如下:
int emailCount = 0;
int addressCount = 0;
for (Person person : persons) {
emailCount += person.email.size();
addressCount += person.address.size();
}
System.out.println(emailCount);
System.out.println(addressCount);
打印
5
6
这也可以通过流来完成,但开销更大。