java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法
Sean Adkinso..
9
這是一個有趣的練習.我創(chuàng)建了一個名為ParallelList的對象,它接受可變數(shù)量的類型化列表,并且可以遍歷每個索引處的值(作為值列表返回):
public class ParallelList implements Iterable> {
private final List> lists;
public ParallelList(List... lists) {
this.lists = new ArrayList>(lists.length);
this.lists.addAll(Arrays.asList(lists));
}
public Iterator> iterator() {
return new Iterator>() {
private int loc = 0;
public boolean hasNext() {
boolean hasNext = false;
for (List list : lists) {
hasNext |= (loc < list.size());
}
return hasNext;
}
public List next() {
List vals = new ArrayList(lists.size());
for (int i=0; i
vals.add(loc < lists.get(i).size() ? lists.get(i).get(loc) : null);
}
loc++;
return vals;
}
public void remove() {
for (List list : lists) {
if (loc < list.size()) {
list.remove(loc);
}
}
}
};
}
}
用法示例:
List list1 = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
List list2 = Arrays.asList(new Integer[] {6, 7, 8});
ParallelList list = new ParallelList(list1, list2);
for (List ints : list) {
System.out.println(String.format("%s, %s", ints.get(0), ints.get(1)));
}
哪個會打印出來:
1, 6
2, 7
3, 8
4, null
5, null
此對象支持可變長度列表,但顯然可以將其修改為更嚴格.
不幸的是我無法擺脫ParallelList構(gòu)造函數(shù)上的一個編譯器警告:A generic array of List is created for varargs parameters,所以如果有人知道如何擺脫它,讓我知道:)
`@ SuppressWarnings` ;-) (6認同)
總結(jié)
以上是生活随笔為你收集整理的java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angular7.2构建包如何兼容ie_
- 下一篇: ecshop模板中使用php,使ecsh