2015-05-01 4 views
1

У меня есть матрица с 223 строками и 11 столбцами. Я хочу разбить эту матрицу на пакеты (каждый пакет будет иметь 10 строк из матрицы), так что в конце у меня должно быть 22 пакета (I отклонит последние 3 строки). После того, как у меня есть пакеты, я хочу выполнить алгоритм перекрестной проверки на моих пакетах, и я думал разместить все мои пакеты в HaskMap, которые будут иметь один ключевой пакет и оценить остальные. Так это будет выглядеть следующим образомConstruct ArrayList из меньших ArrayLists

key = pack1, value = pack2,...,pack22 
key = pack2, values = pack1, pack3,...pack22 
............................................. 
key = pack22, values = pack1,...,pack21 

Перед созданием карты у меня есть проблемы в spliting матрицы в пакеты Вот мой код:

 int k = 0; 
     ArrayList<ArrayList<double[]>> allPacks = new ArrayList<ArrayList<double[]>>(); 
     ArrayList<double[]> batch = new ArrayList<double[]>(); 
     for (int i=0;i<matrix.length;i+=10) { 
      System.out.println(i); 
      batch.add(matrix[i]); 
      k++; 
      if (k % 10 == 0) { 
       allPacks.add(batch); 
       batch.clear(); 
      } 
     } 

Если я печатаю размер allPacks равен 2. Я не получай. Любая помощь?

+0

Могли бы вы добавить все соответствующий код (минимальный рабочий пример) - что 'matrix', например? –

+0

Я сказал, что 'matrix' имеет' 223 rows' и '11 columns'. Я жестко запрограммировал его, поэтому было бы aburde вставить здесь 223 строку кода. В основном это имеет значения 'double' – GeR

ответ

2

Ваша основная проблема заключается в том, что вы каждый раз добавляете то же самое batch.

Это должно исправить:

ArrayList<ArrayList<double[]>> allPacks = new ArrayList<ArrayList<double[]>>(); 
    for (int i = 0; i < matrix.length - 10; i += 10) { 
     System.out.println(i); 
     ArrayList<double[]> batch = new ArrayList<double[]>(); 
     for (int j = 0; j < 10; j++) { 
      batch.add(matrix[i + j]); 
     } 
     allPacks.add(batch); 
    } 
+0

Я получаю' ArrayIndexOutOfBoundException' – GeR

+0

@Georgiana - Извините - отредактировано - теперь используется 'i OldCurmudgeon

+0

Спасибо, теперь это работает! Любая идея о том, как я могу создать эту «HashMap», о которой я говорил в начале? – GeR

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