gpt4 book ai didi

java - 使用Java流将ArrayList转换为Integer[][]

转载 作者:行者123 更新时间:2023-11-30 06:05:45 25 4
gpt4 key购买 nike

我有一个 ArrayList,需要将其转换为二维数组。我需要使用 Java 流来实现这一点。

private static ArrayList<Integer> GLOBALLIST;
Integer[][] TwoDArray = new Integer[2][8];
GLOBALLIST = Lists.newArrayList(36,40,44,48,52,56,60,64,100,104,108, 112,116,120,124,128);
AtomicInteger counter = new AtomicInteger(0);
TwoDArray = (Integer[][]) ((GLOBALLIST.stream()
.collect(Collectors.groupingByConcurrent(it -> counter.getAndIncrement() / 8))
.values()).toArray(new Integer[2][8]));

这给出了错误,指出 ObjectList 无法转换为 Integer[][]

最佳答案

当您的起点是 ArrayList 时,即支持随机访问的 List,例如

ArrayList<Integer> list = new ArrayList<>(Arrays.asList(36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,144,149,153,157,161,165,169,173,177));

你可以简单地使用

Integer[][] array = IntStream.range(0, (list.size()+7)/8)
.mapToObj(ix -> list.subList(ix*=8, Math.min(ix+8,list.size())).toArray(new Integer[0]))
.toArray(Integer[][]::new);

System.out.println(Arrays.deepToString(array));
[[36, 40, 44, 48, 52, 56, 60, 64], [100, 104, 108, 112, 116, 120, 124, 128], [132, 136, 140, 144, 149, 153, 157, 161], [165, 169, 173, 177]]

关于java - 使用Java流将ArrayList<Integer>转换为Integer[][],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com