Ваши звонки swap
не изменят ничего на programSortedPlayerList
.
Аргументы, передаваемые swap
, не изменяются им. Как только вы назначаете новый объект любой из переменных аргумента, вы получаете только локальный эффект. Вызывающий код не увидит никаких изменений переданных объектов. Это принцип «вызова по значению»: объекты (ссылки) передаются в swap
, но, что бы ни делал swap
, он не может изменить ссылки вызывающего.
Для того, чтобы изменить порядок элементов в programSortedPlayerList
в какой-то момент вам придется вызывать programSortedPlayerList.set
.
Так, например:
public static void swap(ArrayList<Player> playerList, int i, int j) {
Player temp = playerList.get(i);
playerList.set(i, list.get(j));
playerList.set(j, temp);
}
... и вызывать как:
swap(programSortedPlayerList, i, indexofmin);