有重复值时如何选择ArrayList中的第一个最大元素

时间:2019-01-26 06:46:33

标签: java arraylist collections

我正在尝试使用Collections.swap交换最大值和最小值,但是当ArrayList中的最大值或最小值为两倍或更多时,它不起作用

2 个答案:

答案 0 :(得分:0)

假设您的ArrayList已排序,则可以很容易地对其进行重复数据删除(请参阅How to efficiently remove duplicates from an array without using Set)。一旦明确地将其复制,您将不再遇到相同的问题。

如果您不对ArraList进行排序,则可以使用比较器简单地调用sort方法(请参阅javadoc https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)。

答案 1 :(得分:0)

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)返回ArrayList中maxValue的第一个索引,尽管ArrayList中存在多个maxValue。同样,list.indexOf(minValue)对于minValue返回相同的结果。