gpt4 book ai didi

java - 将数组 vector 转换为一个数组

转载 作者:行者123 更新时间:2023-11-30 05:12:47 28 4
gpt4 key购买 nike

我有一个 float 组 vector ,即 Vector 。我想将其转换为一个 float 组,即将 vector 内每个 float[] 中的每个元素移动到一个新的 float[] 中。我对使用 Java 内置方法 vector.toArray() 来执行此操作有点困惑。有什么想法吗?

最佳答案

有多种方法可以做到这一点。您可以调用 toArray() 来获取多个数组,然后将它们连接成一个大数组(Guava 有实用方法来执行此操作)。或者,您可以分配一个大数组,然后使用 System.arraycopy 将组件数组复制到大数组的适当部分。

这是后者的示例:

import java.util.*;

public class Flatten {
static float[] flatten(float[]... arrs) {
int L = 0;
for (float[] arr : arrs) {
L += arr.length;
}
float[] ret = new float[L];
int start = 0;
for (float[] arr : arrs) {
System.arraycopy(arr, 0, ret, start, arr.length);
start += arr.length;
}
return ret;
}
public static void main(String[] args) {
Vector<float[]> v = new Vector<float[]>();
v.add(new float[] { 1,2,3, });
v.add(new float[] { 4, });
v.add(new float[] { });
v.add(new float[] { 5,6, });

float[] flattened = flatten(v.toArray(new float[0][]));
System.out.println(Arrays.toString(flattened));
// prints "[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]"
}
}

Guava ,看起来您可以使用 Floats.concat(float[]...) 通过一行来完成此操作:

float[] flattened = Floats.concat(v.toArray(new float[0][]));

另请参阅

<小时/>

还应该注意的是,除非您需要 Vector 的线程安全性,否则您应该使用 ArrayList 来代替。

另请参阅

关于java - 将数组 vector 转换为一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786262/

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