Java中数组列表的数组

时间:2018-08-15 15:32:16

标签: java arrays list

我正在写这样的东西。 TreeMap<Double, List<double[]>[]> tm = new TreeMap<>();在我的日食中似乎不起作用,因为init中的代码可以识别我想要的数据类型。总是有错误。我可以这样做吗?或如何做这种事情?

private static void init(TreeMap<Double, List<Double>[]> tm, List<double[]> ll) {
    for(double[] a:ll) {
        if(!tm.containsKey(a[0])) {
            List[] ab= new List[2];
            tm.put(new Double(a[0]),ab);
            tm.get(a[0])[0] = new LinkedList<double[]>();
            tm.get(a[0])[1] = new LinkedList<double[]>();
        }
        List<Double[]>[] b = tm.get(a[0]);
    }
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    TreeMap<Double, List<double[]>[]> tm = new TreeMap<>();
    List<double[]> ll = new LinkedList<>();
    ll.add(new double[] {-3,2.2});
    ll.add(new double[] {1,5.3});
    ll.add(new double[] {-1.3,4});
    ll.add(new double[] {8,22});
    init(tm,ll);
}

2 个答案:

答案 0 :(得分:6)

List<double[]>[]不正确。 List<T>已经表明它是T的列表(或一般的集合)。

因此,它必须为List<double[]>

但是,我看到您正在尝试将TreeMap<Double, List<double[]>>传递给 TreeMap<Double, List<Double[]>>无效。编译器无法将double[]装箱(或拆箱)到Double[]。使两者保持一致,并且应该可以工作。

答案 1 :(得分:1)

private static void init(TreeMap<Double, List<double[]>[]> tm, List<double[]> ll) {
for(double[] a:ll) {
    if(!tm.containsKey(a[0])) {
        List[] ab= new List[2];
        tm.put(new Double(a[0]),ab);
        tm.get(a[0])[0] = new LinkedList<double[]>();
        tm.get(a[0])[1] = new LinkedList<double[]>();
    }
    List<double[]>[] b = tm.get(a[0]);

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
TreeMap<Double, List<double[]>[]> tm = new TreeMap<>();
List<double[]> ll = new LinkedList<>();
ll.add(new double[] {-3,2.2});
ll.add(new double[] {1,5.3});
ll.add(new double[] {-1.3,4});
ll.add(new double[] {8,22});
init(tm,ll);
}