2014-12-10 3 views
-2
public class SparseMatrix 
{  
    static SparseObjectMatrix2D matrix = new SparseObjectMatrix2D(1000000, 1000000); 

    public static void main(String[] args) 
    { 
      matrix.set(1, 2, 3.0); 
    }  
} 

Здесь ошибка, что я получаю:Как создать 1000000 x 1000000 разреженную матрицу с помощью Java Colt?

java.lang.ExceptionInInitializerError Caused by: 
java.lang.IllegalArgumentException: matrix too large at 
cern.colt.matrix.impl.AbstractMatrix2D.setUp(Unknown Source) at 
cern.colt.matrix.impl.AbstractMatrix2D.setUp(Unknown Source) at 
cern.colt.matrix.impl.SparseObjectMatrix2D.<init>(Unknown Source) at 
cern.colt.matrix.impl.SparseObjectMatrix2D.<init>(Unknown Source) at 
SparseMatrix.<clinit>(SparseMatrix.java:18) Exception in thread "main" 
+2

Пожалуйста, разместите сообщение об ошибке, которое вы получаете. – Sizik

+2

Пожалуйста, на самом деле [задать вопрос] (http://stackoverflow.com/help/how-to-ask) –

+0

java.lang.ExceptionInInitializerError Вызванный: java.lang.IllegalArgumentException: матрица слишком большой \t в cern.colt .matrix.impl.AbstractMatrix2D.setUp (Неизвестный источник) \t at cern.colt.matrix.impl.AbstractMatrix2D.setUp (Неизвестный источник) \t at cern.colt.matrix.impl.SparseObjectMatrix2D. (Неизвестный источник) \t at cern.colt.matrix.impl.SparseObjectMatrix2D. (Неизвестный источник) \t at SparseMatrix. (SparseMatrix.java:18) Исключение из потока «main» Java Результат: 1 –

ответ

2

Вы не можете. Из documentation:

Броски:
IllegalArgumentException - если rows<0 || columns<0 || > (double)columns*rows > Integer.MAX_VALUE.

Вместо создания матрицы адресованного с координатами х и у, возвращая Value, создать HashMap<Coordinates, Value>, где Coordinates является простым классом удерживающего х и у.

 Смежные вопросы

  • Нет связанных вопросов^_^