【问题标题】:Java HashSet to arrayJava HashSet 到数组
【发布时间】:2013-11-28 22:42:35
【问题描述】:

我正在尝试将 HashSet 转换为双精度数组。是的,我定义了一个 main 方法和类,我刚刚包含了我导入的内容以及这个特定函数的代码。

这是出现的错误:

Ass10.java:148: error: no suitable method found for toArray(double[])
                rtrn = s.toArray(rtrn);

代码如下:

import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Set;
import java.util.HashSet;


public static double[] negated(double[] a) {
        Set<Double> s = new HashSet<Double>();
        for(double x : a) {
            s.add(x);
        } for(double x : s) {
            if(s.contains(-x) == false) {
                s.remove(x);
            }
        }
        double[] rtrn = new double[s.size()];
        rtrn = s.toArray(rtrn);
        return rtrn;
        }

【问题讨论】:

  • 基本上没有办法将 double[] 转换为 Double[] 就像有一个 Double 转换为 Double 一样,反之亦然。

标签: java arrays set hashset


【解决方案1】:

在这种情况下,您不能使用原始数组,因为 Java 中的数组没有自动装箱。使用 Double[] 即可。

【讨论】:

    【解决方案2】:

    Java 集合适用于引用类型。函数Collection.toArray(T[] a) 具有泛型引用类型的签名。所以你需要传递一个引用类型数组而不是原始数组。原始类型double对应的引用类型是Double

    Double[] rtrn = new Double[s.size()];
    rtrn = s.toArray(rtrn);
    

    【讨论】:

      【解决方案3】:

      这是一个编译时错误,对吧?尝试使用 Double[] 而不是 double[]。

      【讨论】:

        猜你喜欢
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-17
        • 2018-04-12
        相关资源
        最近更新 更多