Collections.max(arraylist)
doesn\'t work, and a regular for
loop won\'t work either.
What I have is:
ArrayList
Streams are perfect for these sort of problems.
Forecast highest = forecasts.stream()
.max((fc1, fc2) -> fc1.getTemp() - fc2.getTemp())
.get();
Another solution is use map reduce:
Optional<Forecast> element = forecasts
.stream()
.reduce((a,b) -> a.getTemperature() > b.getTemperature() ? a : b );
In this way you could even use use parallelStream()
I have two ideas. First of all, you used forecast
in the parameter, but it should be forecasts
. Also, you never gave your code for the class Forecast
. I may be wrong, because I didn't see all of your code, but you need to convert Forecast to a Integer
. Do this by Integer i = Integer.parseInt(forecasts);
Next use Collections.max(i)
As your ArrayList
contains Forecast
objects you'll need to define how the max
method should find the maximum element within your ArrayList
.
something along the lines of this should work:
ArrayList<Forecast> forecasts = new ArrayList<>();
// Forecast object which has highest temperature
Forecast element = Collections.max(forecasts, Comparator.comparingInt(Forecast::getTemperature));
// retrieve the maximum temperature
int maxTemperature = element.getTemperature();
here is the simple method that return a max value from arraylist
public static object GetMaxValue(ArrayList arrayList)
{
ArrayList sortArrayList= arrayList;
sortArrayList.Sort();
sortArrayList.Reverse();
return sortArrayList[0];
}