I have two different functions for trying to find the largest value in an ArrayList. I have two since i was first seeing if they would return the same value and then performance time.
However they are reproducing the same value but it seems to be the last value of the ArrayList, regardless if its the largest or not. I think it might be taking the key instead of the value.
The code is below, and I think its just a simple mistake but can anyone point me in the right direction?
double highest = fitnessArray.get(0);
for (int s = 0; s <fitnessArray.size(); s++){
if (fitnessArray.get(s)>highest)
highest=fitnessArray.get(s);
}
System.out.println("highest fitness = " + highest
+ " indoexOf = " + fitnessArray.indexOf(highest));
double highestFitness;
highestFitness = Collections.max(fitnessArray);
System.out.println("lowest fitness 2 = " + highestFitness );
Use already existing api
Collections.max(arrayList);
Example
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(new Integer("3"));
arrayList.add(new Integer("1"));
arrayList.add(new Integer("8"));
arrayList.add(new Integer("3"));
arrayList.add(new Integer("5"));
Object obj = Collections.max(arrayList);
System.out.println(obj);
}
}
Documentation
You can also consider as a slightly worse solution
Collections.sort(arrayList); // Sort the arraylist
arrayList.get(arrayList.size() - 1); //gets the last item, largest for an ascending sort
Second approach might be useful if you'll need sorted list later.
You might have better luck if you store the index that the largest number is at:
if (fitnessArray.size() > 0) {
double highest = fitnessArray.get(0);
int highestIndex = 0;
for (int s = 1; s < fitnessArray.size(); s++){
double curValue = fitnessArray.get(s);
if (curValue > highest) {
highest = curValue;
highestIndex = s;
}
}
System.out.println("highest fitness = " + highest + " indoexOf = " + highestIndex);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With