как выбрать первый по величине элемент в ArrayList, когда есть повторяющиеся значения - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь поменять местами максимум и минимум, используя Collections.swap, но он не работает, когда максимум или минимум вдвое больше или больше в ArrayList

Ответы [ 2 ]

0 голосов
/ 26 января 2019
int maxValue = Collections.max(list);  //Get the max value of your ArrayList
int maxIndex = list.indexOf(maxValue); //Get the first index of maxValue
int minValue = Collections.min(list);  //Get the min value of your ArrayList
int minIndex = list.indexOf(minValue);  //Get the first index of minValue
Collections.swap(list, maxIndex, minIndex);  //swapping 

Я думаю, что это на самом деле то, что вы хотите.Здесь list.indexOf (maxValue) возвращает первый индекс maxValue из вашего ArrayList, хотя в вашем ArrayList присутствует несколько maxValue.И аналогично list.indexOf (minValue) возвращает то же самое для minValue.

0 голосов
/ 26 января 2019

Если ваш ArrayList отсортирован, вы можете легко его дедуплицировать (см. Как эффективно удалять дубликаты из массива без использования Set ). Как только оно определенно будет продублировано, у вас больше не будет той же проблемы, с которой вы столкнулись.

Если вы не сортируете ArraList, вы можете просто вызвать метод сортировки с помощью компаратора (см. Javadoc https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...