2013-11-17 2 views
0

Я пытаюсь добавить два разных разреженных седла вместе для достижения одной большой матрицы со всеми значениями из другой матрицы. Но если оба они имеют значение на определенном ключе, значения должны быть добавлены вместе. Я не могу понять, как ссылаться на создаваемую новую матрицу, чтобы я мог поместить в нее новые значения, а затем вернуться.Добавление двух sparsematrix treemaps

ответ

0

Я бы предложил что-то вроде этого - обратите внимание, что это непроверенный код.

public static SparseMatrix add(SparseMatrix a, SparseMatrix b) { 
    if (a.rows != b.rows || a.cols != b.cols) { 
    // They must be the same dimensions. 
    return null; 
    } 
    return new SparseMatrix(a.rows, a.cols).add(a).add(b); 
} 

private SparseMatrix add(SparseMatrix a) { 
    // Walk all of his. 
    for (Integer i : a.matrix.keySet()) { 
    // Do I have one of these? 
    if (matrix.containsKey(i)) { 
     // Yes! Add them together. 
     TreeMap<Integer, Double> mine = matrix.get(i); 
     TreeMap<Integer, Double> his = a.matrix.get(i); 
     // Walk all values in there 
     for (Integer j : his.keySet()) { 
     // Do I have one of these? 
     if (mine.containsKey(j)) { 
      // We both have this one - add them. 
      mine.put(j, mine.get(j) + his.get(j)); 
     } else { 
      // I do not have this one. 
      mine.put(j, his.get(j)); 
     } 
     } 
    } else { 
     // I do not have any of these - copy them all in. 
     matrix.put(i, new TreeMap(a.matrix.get(i))); 
    } 
    } 
    return this; 
} 
Смежные вопросы