将数组转换为列表

时间:2011-09-28 14:51:09

标签: java arrays collections

我有以下代码片段:

public void doSomething() {
  float array[] = new float[2];
  array[0] = (float) 0.0;
  array[1] = (float) 1.2;
  someMethod(array);
}

public void someMethod(Object value) {
   //need to convert value to List<Float>
}

正如您在上面所看到的,我想将值变量(即数组(但作为Object传递))转换为List。 我尝试了以下建议:Create ArrayList from array

    new ArrayList<Float> (Arrays.asList(value));

但是,它不能编译。

任何提示?

5 个答案:

答案 0 :(得分:7)

public void someMethod(Object value) {
    float[] array = (float[]) value;
    List<Float> result = new ArrayList<Float>(array.length);
    for (float f : array) {
        result.add(Float.valueOf(f));
    }
    // ...
}

我不知道为什么你没有将值参数定义为float[]而不是Object

答案 1 :(得分:4)

[根据JB Nizet的更正更新。] 如果对数组使用Float而不是float,那么如果编译器知道value是一个数组,那么它将工作 - 它不会。添加演员:

new ArrayList<Float> (Arrays.asList((Float[])value));

或者只是将value的参数类型更改为Float [],并忽略演员表。

答案 2 :(得分:2)

如果您想将float[]视为List<Float>,那么Guava的Floats.asList方法将完成工作。

答案 3 :(得分:1)

float更改为Float,因为Arrays.asList(T...a)无法返回List<float>,因为Java基元类型无法作为参数传递给泛型类型。

public void doSomething() {
    Float array[] = new Float[2];
    array[0] = 0.0f;
    array[1] = 1.2f;
    someMethod(array);
}

public void someMethod(Object value) {
    List<Float> list = new ArrayList<Float> (Arrays.asList((Float[])value));
    System.out.println(list);
}

打印

[0.0, 1.2]

答案 4 :(得分:0)

您有float个数组,但是您正在尝试获取Float的列表。这就是你需要的:

public void doSomething() {
    Float[] array = new Float[2];
    array[0] = new Float(0.0);
    array[1] = new Float(1.2);
    someMethod(array);
}

public void someMethod(Object value) {
    List<Float> list = Arrays.asList((Float[])value);
    System.out.println(list);
}