将object [] []转换为ArrayList <object []> </object []>

时间:2013-01-13 15:32:52

标签: java arrays collections multidimensional-array arraylist

我想可能在我的帖子之前已经多次询问/回答了这个问题。但我无法得到我想要的东西,所以我再次发布:

我想这样做:

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);
}

5 个答案:

答案 0 :(得分:6)

当您从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);

答案 1 :(得分:2)

这适合我:

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));
}

答案 2 :(得分:1)

另一种方法可以做到这一点:

    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))

我忘了添加演员......修好了。

答案 3 :(得分:0)

你可以这样做而且你不需要转换:

Float[][] test = {{2f,3f},{3f,4f}};

允许将Java中的本机包装为更改为对象的概念称为AutoBoxing,此处正在使用它。但是,要实现这一点,您必须明确说明这些数字是浮点数还是使用(浮点数)进行转换。

答案 4 :(得分:0)

尝试

    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);