Collections.max(arraylist) no funciona, y un bucle for normal tampoco funcionará.
lo que tengo es:
ArrayList<Forecast> forecasts = current.getForecasts(); Collections.max(forecast) me da este error:
The method max(Collection<? extends T>) in the type Collections is not applicable for the arguments (ArrayList<Forecast>) ArrayList contiene objetos de Forecast , cada uno de los cuales tiene un campo int para la temperatura de cada día. Estoy tratando de almacenar el máximo en un int max.
Como su ArrayList contiene objetos Forecast , deberá definir cómo el método max debe encontrar el elemento máximo dentro de su ArrayList .
algo a lo largo de las líneas de esto debería funcionar:
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();Otra solución es usar map reduce:
Optional<Forecast> element = forecasts .stream() .reduce((a,b) -> a.getTemperature() > b.getTemperature() ? a : b ); De esta manera, incluso podrías usar parallelStream()
Las transmisiones son perfectas para este tipo de problemas.
Forecast highest = forecasts.stream() .max((fc1, fc2) -> fc1.getTemp() - fc2.getTemp()) .get();