我想这个问题可能在我发帖之前已经被问过/回答过好几次了。但是我不能得到我正在寻找的确切的东西,所以我再次发布:
我想这样做:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>();
AF = Arrays.asList(fa2);
但是它给出了错误:
Type mismatch: cannot convert from List<float[]> to ArrayList<Float[]>
我理解错误的原因,但什么是最方便的方式来做Java转换?
这是我能想到的最简单的方法。有更好/更方便的吗?
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>(fa2.length);
for (float[] fa : fa2) {
//initialize Float[]
Float[] Fa = new Float[fa.length];
//copy element of float[] to Float[]
int i = 0;
for (float f : fa) {
Fa[i++] = Float.valueOf(f);
}
//add Float[] element to ArrayList<Float[]>
AF.add(Fa);
}
当你从float[]
转换到Float[]
时,你必须手动完成:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>();
for(float[] fa: fa2) {
Float[] temp = new Float[fa.length];
for (int i = 0; i < temp.length; i++) {
temp[i] = fa[i];
}
AF.add(temp);
}
或者你可以一直使用float[]
:
List<float[]> AF = Arrays.asList(fa2);
这个为我运行:
float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<float[]> AF = Arrays.asList(fa2);
编辑:如果出于某种原因你必须混合float[]和float[]使用Apache Commons ArrayUtils.toObject
float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<Float[]> AF = new ArrayList(fa2.length);
for (float[] fa : fa2) {
AF.add(ArrayUtils.toObject(fa));
}
还有一种方法:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<float[]> AF = new ArrayList<float[]>((Collection<float[]>)Arrays.asList(fa2))
我忘了加演员了。固定。
你可以这样做,你不需要转换:
Float[][] test = {{2f,3f},{3f,4f}};
允许在Java中包装本机以更改为对象的概念称为自动装箱,这里正在使用它。然而,要做到这一点,你必须明确地说这些数字是浮点数,或者使用(float)对它们进行强制转换。
try
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
List<float[]> af = Arrays.asList(fa2);
或
Float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<Float[]> af = Arrays.asList(fa2);