Объекты не работают таким образом в Java.Когда вы делаете это:
finalList = this.currenciesPair;
вы в основном создаете два указателя на один и тот же объект.Поэтому, если вы выполните finalList.remove(i)
, любой элемент, который был в i
, также будет удален из currenciesPair
.
Если вы хотите сделать копию, у класса ArrayList есть удобный конструктор:
List<SelectCurrency> finalList = new ArrayList(currenciesPair);
Это не делает ArrayList<ArrayList<SelectCurrency>>
таким, каким может показаться.Если вы действительно посмотрите на код этого конструктора, вы увидите, что он перебирает заданную коллекцию (List, Set, ArrayList, ArraySet и т. Д.) И добавляет значения к создаваемому ArrayList.Поэтому вместо создания двух указателей для одного и того же объекта у вас есть два отдельных объекта с одинаковым содержимым.
РЕДАКТИРОВАТЬ:
Я рекомендую использовать итератор вместо стандартного цикла for.Это немного чище:
for (SelectCurrency currency : currenciesPair) {
if (currency.getCurrencyId() == toCurrency) finalList.remove(currency)
}
Обратите внимание, что я использую currenciesPair
, а не finalList
в строке for.