Не могу понять почему возникает IndexOutOfBoundsException

210
10 марта 2018, 19:08

При работе этого кода возникает IndexOutOfBoundsException, хотя индекс никак не может выходить за пределы arrayList:

    public def file = new File('file.txt')
    ArrayList<String> array = new ArrayList<String>()
    int w= 0;
    file.eachLine{String line -> line.tokenize().each { String word -> if(word.startsWith('qwerty')){array.add(word); array.set(w++, array.get(w++).replaceAll("qwerty", ""))}}};

А вот этот код правильно срабатывает:

    file.eachLine{String line -> line.tokenize().each { String word -> if(word.startsWith('qwerty'))array.add(word)}};
    for (int i = 0; i < array.size(); i++){
        array.set(i, array.get(i).replaceAll("qwerty", ""))
    }

Помогите разобраться, может так вообще нельзя поступать, как в первом примере?

Answer 1

Первый индекс массива = 0, значение w = 0 при инициализации, а при первом обращении w++, то есть 1 и далее с опережением индексов на 1.

Видимо проще всего решить, указав начально значение w = -1.

READ ALSO
Когда следует использовать интерфейсы

Когда следует использовать интерфейсы

Столкнулся с тем, что часто в системах объявляют интерфейсы для каждого класса из слоёв service or repositoryСоответственно каждый интерфейс имеет...

209
Column &#39;personal.id&#39; is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

Column 'personal.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

Не могу решить проблему, все работает корректно на базе Н2, на базе mssql вылетает ошибка (должна обязательно быть mssql)

200
Как правильно включить header в recyclerview?

Как правильно включить header в recyclerview?

Мне нужно, чтобы в recycler view появился headerКак правильно подключить его в адаптере? (есть два объекта - item и header)

184