dar*_*zul 3 java iterator guava
我想创建一个迭代多个列表的函数.现在我知道这些列表具有完全相同的大小(并且它们也可以具有不同的类型),例如:
List<Integer> list1 = getList1();
List<String> list2 = getList2();
List<Long> list3 = getList3();
list1.size() == list2.size(); // returns true
list2.size() == list3.size(); // returns true
Run Code Online (Sandbox Code Playgroud)
并且我希望能够调用一个函数,该函数在每个列表中的相同切片上占用3个元素,例如:
int calculate(int elemList1, String elemList2, long elemList3) {...}
// iterator over the lists in parallel {
int ret = calculate(elemList1, elemList2, elemList3);
// }
Run Code Online (Sandbox Code Playgroud)
我想做的相当于我在guava中看到的内容,但是看起来还没有实现:http://code.google.com/p/guava-libraries/issues/detail?id = 677
他们谈论做Iterators.interleave或Iterators.zip,我想做类似但我无法做到的事情,所以有人可以帮我一点吗?谢谢!
我宁愿不必获得一个列表的大小并通过索引迭代它们,因为将来我可以有不同大小的列表,所以我只想使用一种方法来做到这一点.
复合迭代器可能是一个很酷的主意,例如:
Iterator<Array<?>> compoundIterator = createIterator(List1, List2, List3);
Run Code Online (Sandbox Code Playgroud)
然后在实现中,你将为每个列表创建迭代器,然后循环遍历项目并将它们放入一个数组中,然后你对这些东西的消费看起来像:
while (compoundIterator.hasElements()){
Array[] elements = compountIterator.nextElement();
calculate(elements[0], elements[1], elements[2]);
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案的优点是你隐藏了一个列表是否用完的所有细节(当然,如果有的话,你必须决定你想做什么,但也可以包含在里面).
| 归档时间: |
|
| 查看次数: |
11253 次 |
| 最近记录: |