2016-11-17 1 views
-1

Я столкнулся со следующей проблемой. У меня есть список TOTAL (размер: S), и мне нужно разбить его на N смежных блоков. Вот код:JAVA - subList возвращает пустые списки внутри цикла FOR

int start_index, end_index; 

     for(int i = 0; i < N; i++){ 
      start_index = (S/N)*i; 
      end_index = start_index + (S/N) - 1; 
      List<String> SUBblock = TOTAL.subList(start_index, end_index-1); 
      System.out.println("block "+i+": from "+start_index+" to "+end_index); 
      System.out.println("block "+i+": "+SUBblock .toString()); 
     } 

Индексы правильно: первый System.out.println работает отлично. Но SUBblock всегда пуст. Вызов сублиста вне цикла for работает отлично: например, TOTAL.subList(0,2) возвращает первый и второй элементы, как ожидалось.

Есть ли что-то, что мне не хватает здесь?

+0

Что такое _'List TOTAL (размер: S) '_ ?? Вы создали его в небольшом размере? –

+0

@Jordi A 'List ' named 'TOTAL', размер которого' S' – Fab

+0

'end_index - 1' выглядит подозрительно. Вы знаете, что индекс конца, переданный в 'subList', не включен, правильно? – Arkadiy

ответ

1

Я думаю, что вы допустили ошибку при расчете индекса начала и конца. Попробуйте использовать следующий код.

for(int i = 0; i < N; i++){ 
     start_index = (S/N)*i; 
     end_index = start_index + (S/N); 
     List<String> SUBblock= (TOTAL.subList(start_index, end_index)); 

     System.out.println("block "+i+": from "+start_index+" to "+end_index); 
     System.out.println("block "+i+": "+SUBblock .toString()); 
    } 
Смежные вопросы