这个问题在这里已经有答案了:
使用java流将两个大小相同(类型不同)的列表合并到域对象列表中(2个答案)
上个月关门了。
以下代码正在使用索引for循环:
List<A> a = ..;
List<B> b = ..;
List<C> c = ..;
// a.size() == b.size() == c.size() - fundamental business logic assumption
int size = a.size();
for (int i = 0; i < size; i++) {
doSthWith(a.get(i));
doSthWith(b.get(i));
doSthWith(c.get(i));
}
这是否可以进一步简化代码,而不使用索引同时迭代三个列表?
3条答案
按热度按时间fumotvh31#
你可以用
forEach
功能:您还可以使用函数来处理每个列表:
功能接口:
实现:
使用:
pexxcrt22#
如果所有三个列表都要像您所期望的那样迭代在一起,那就意味着它们是紧密相关的,并且有资格成为某种类型的对象。它需要事先简化设计。
那我就去喝一杯
List<MyClass>
而不是三个相关数据的列表。从长远来看,这将简化您的代码。而且,为了回答您的问题,您目前使用的任何方法似乎都非常幼稚,但如果您不承担制作类的辛苦,那么这是最可读的方法。
r6vfmomb3#
因为您是通过列表的接口来引用列表的,所以您应该总是喜欢使用
Iterator
相对于get()
,因为你不知道后者是否同样有效。你可以自己创造
Iterator
它封装了上述逻辑: