[英]How do I copy elements in a parallel array into a new parallel array with no duplicates in Java?
[英]Parallel array copy in Java
我希望將一個數組並行復制到另一個數組中,例如:
int[] a = {1, 3, 5, 7, 9};
int[] b = new int[a.length];
for(int i = 0; i < a.length; i++) // parallel
{
b[i] = a[i];
}
在此示例中,我希望一個線程復制前 3 個索引,另一個復制其他 2 個。當然,它也可以是任何其他變體。
需要考慮的事項:
我試過的:
IntStream.range
: IntStream.range(0, a.length).parallel().forEach(i -> {
b[i] = a[i];
});
這導致在Local variable percentiles defined in an enclosing scope must be final or effectively final
錯誤,因為b
不是final
的並且無法分配。
沒有理由並行執行此操作。 因為您正在使用int[]
,所以可以使用clone()
來復制它:
int[] a = {1, 3, 5, 7, 9};
int[] b = a.clone();
如果出於某種原因,您仍想並行執行此操作,則可以使用Arrays#parallelSetAll
:
Arrays.parallelSetAll(b, i -> a[i]);
對於每個片段, b
的元素是等價的:
[1, 3, 5, 7, 9]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.