Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数组转换为列表_Java_Arrays_Collections - Fatal编程技术网

Java 将数组转换为列表

Java 将数组转换为列表,java,arrays,collections,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> } public void do

我有以下代码片段:

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>
}
public void doSomething(){
浮点数组[]=新浮点[2];
数组[0]=(浮点)0.0;
数组[1]=(浮点)1.2;
方法(数组);
}
公共方法(对象值){
//需要将值转换为列表
}
正如您在上面所看到的,我想将作为数组(但作为对象传递)的value变量转换为List。 我尝试了以下建议:

newarraylist(Arrays.asList(value));
但是,它不编译


任何提示?

[根据JB Nizet的更正进行更新。] 如果对数组使用Float而不是Float,那么如果编译器知道
value
是一个数组,那么它就可以工作,而不是使用Float。添加演员阵容:

new ArrayList<Float> (Arrays.asList((Float[])value));
newarraylist(Arrays.asList((Float[])值);
或者只需将
value
的参数类型更改为Float[],并省略强制转换。

public void somethod(对象值){
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[]数组=(float[])值; 列表结果=新的ArrayList(array.length); for(浮点f:数组){ 结果。添加(浮点值(f)); } // ... }

我不知道您为什么不将value参数定义为
float[]
而不是
对象

您有一个
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);
}        
public void doSomething(){
Float[]数组=新的Float[2];
数组[0]=新浮点(0.0);
数组[1]=新浮点(1.2);
方法(数组);
}
公共方法(对象值){
列表=数组.asList((Float[])值);
系统输出打印项次(列表);
}        

float
更改为
float
,因为
数组。asList(T…a)
无法返回
List
,因为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);
}

如果您想将
float[]
作为
List
查看,那么Guava的
float.asList
方法将完成任务。

每当问题涉及编译错误时,包含该错误消息很有帮助,就像显示运行时错误的堆栈跟踪一样。+1您不需要float.valueOf,result.add(f)会起作用的,因为它是自动装箱的。但是,当我回答一个关于原语与对象的问题时,我更喜欢将转换显式化,以避免进一步混淆OP。生成的字节码应该完全相同。它确实完全相同。我不能使用float[]代替Object,因为该方法来自第三方API。现在我们有了ClassCastException:[F不能转换为[Ljava.lang。Float@Matthew-注意第一行-如果对数组使用Float而不是Float。如果不清楚,我的意思是应该声明为:
Float[]array=new Float[2]
@Ed但那不是最初的问题。@Matthew-我知道你对其他答案也有同样的评论。你假设OP不能或不想更改类型。我假设他可以,也不在乎是哪一个。我明白,总的来说,坚持最初问题的前提很重要,但我“你认为这是多余的。如果你真的认为这很可能是他关心的,你可能会考虑问OP。”Ed.我只是指出它不能完成最初的问题。你可以指出他可以改变数组,但你可以从一个浮点开始,而不是一个浮点[]。。问题没有说明您无法更改
doSomething()
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]