【发布时间】:2016-06-17 18:29:32
【问题描述】:
我有一个List<int[]>,我想将其转换为int[][]
我试过这样:
private List<int[]> pos = new LinkedList<>();
...
public int[][] getPos() {
int[][] ret = new int[pos.size()][2];
int i = 0;
for (Object o : pos) {
ret[i] = Arrays.stream((int[]) o).toArray();
i++;
}
return ret;
}
就我而言,最大的问题是另一个线程在转换过程中正在更改列表。所以我在我的 foreach 上得到了一个ConcurrentModificationException。
还有其他方法可以像 Streams 一样做到这一点吗?那将是并发安全的。
问候
【问题讨论】:
-
事先制作一个本地列表副本,这是线程的方式。
-
考虑同步或锁定。
标签: java arrays multithreading list