从循环添加到多维数组

时间:2015-11-08 21:22:57

标签: java arrays list multidimensional-array arraylist

我对Java不太熟练,如果有人能帮助我弄清楚我遇到的问题,我将不胜感激。

所以这是我的代码:`

       static void sum_up_recursive(ArrayList<Double> numbers, int target, ArrayList<Double> partial) {
       double s = 0;
       for (double x: partial) s += x;
       if ( s <target )   

           System.out.println("sum("+Arrays.toString(partial.toArray())+ " " +partial.size() +")="+target);

           if (s >= target)
            return;` 

它给了我这个结果

 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 0.5, 0.5] 10)<=12
 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 1.3] 9)<=12
 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 0.5, 0.5] 10)<=12
 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 1.3] 9)<=12
 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 1.3, 0.5] 10)<=12
 sum([1.3, 0.5, 0.5, 1.3, 0.5, 1.3, 1.3, 0.5, 1.3, 0.5, 1.3] 11)<=12
 and so on... There are hundreds if it..

我想做的是将所有这些结果存储在一个多数组中,以便更容易地操作它们,或者您可能知道如何在该循环中对它们进行排序。就像选择一个具有更大元素总和的行。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以创建一个同时包含List和总和的类

class Sum {

    ArrayList<Double> numbers;
    Double total;
}

此类的自定义Comparator

class SumComparator implements Comparator<Pair> {
    @Override
    public int compare(Sum a, Sum b) {
        return Double.compare(a.total, b.total);
    }
}

然后你可以像这样对一对Pair数组进行排序:

Sum[] sums = new Sum[]; // initialize with values
Arrays.sort(sums, new SumComparator());

这将根据每个List对象中每个Sum个数字的总和对数组或Sum进行排序。