Неправильный поиск одинаковых значений из одной коллекции в другой
Имеется TreeSet<Integer> scores = new TreeSet<>(Collections.reverseOrder()); содержащий следующие значения:
3 0 -1 -2 -3 -4 -1000
Эти значения должны сравниваться со значеними в ArrayList<Integer> unsorted = new ArrayList<>();
[-4, 0, 4, 1, 0, -1, 0, 4, 1, 1, -3, 0, 4, 1, 2, -2, 0, 4, 2, 0, 0, 0, 4, 2, 2, -4, 0, 4, 3, 0, -3, 0, 0, 1, 0, -1000, 0, 1, 1, 0, 3, 0, 1, 1, 1, -1000, 0, 1, 1, 2, 0, 0, 2, 1, 1]
находящимися в позициях по индексам, кратным 5, и затем эти индексы должны быть добавлены в ArrayList<Integer> indices = new ArrayList<>(); с помощью вот такого кода:
for(Integer i : scores){
for(int j=0; j<unsorted.size(); j=j+5){
if((i.intValue()==unsorted.get(j).intValue()) & j%5==0){
indices.add(unsorted.indexOf(unsorted.get(j).intValue()));
}
}
}
out.println(indices.toString());
Однако на выходе получаю список индексов
[28, 1, 1, 5, 15, 10, 10, 0, 0, 35, 35]
вместо ожидаемого
[40, 20, 50, 5, 15, 10, 30, 0, 25, 35, 45]
Выглядит так, как будто внутренний цикл идёт почему-то с шагом +1 (хотя задан +5); кроме того, по идее, при нахождении повторяющихся значений должны быть добавлены номера всех индесков, а не только первого, где значение встретилось, т.к. команды break; при выполнении условия внутреннего цикла нет, и, допустим, для значения -1000 после нахождения индеска первой позиции итерация должна продолжаться...