Picking the highest number in a list of strings

I have a string list with "numbers":
"Rain Probability": [ "100", "95", "95" ]

And I want to be able to get only the highest one. I then put everything in a List called "result" but instead pf the string list I want just the highest number.

`

public List<WeeklyForecast> convert(){

        AllForecast allForecast = Templates.restTemplate(restTemplate);
        List<NextDays> something = allForecast.getNextDays();
        List<WeeklyForecast> result = new ArrayList<WeeklyForecast>();
        
        
        for (int i=0; i< something.size(); i++){
            NextDays before = something.get(i);
            WeeklyForecast weekly = new WeeklyForecast(
              before.getData().getData(),
              before.getTemperature().getMaximumTemperature(),
              before.getTemperature().getMinimumTemperature(),
              before.getRain());

            result.add(i,weekly);
        }
        
        return result;
       
       // before.getRain().stream().mapToInt(Integer::parseInt).max().orElse(-1)     
     
        
    }

`

This is my WeeklyForecast Model:

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class WeeklyForecast {

    @JsonProperty("Date")
    private String data;

    @JsonProperty("Maximum Temperature")
    private String tempMax;

    @JsonProperty("Minimum Temperature")
    private String tempMin;

    @JsonProperty("Rain Probability")
    private int rain;

}

And the NextDays object:

@JsonIgnoreProperties(ignoreUnknown = true)
public class NextDays {

@JsonProperty("@attributes")
private NextDate data;

private List<String> rain;

@JsonProperty("temperatura")
private NextTemperature temperature;

public NextDays(){
    rain = new ArrayList<>();
}

public NextDate getData() {
    return data;
}

public void setData(NextDate data) {
    this.data = data;
}

public NextTemperature getTemperature() {
    return temperature;
}

public void setTemperature(NextTemperature temperature) {
    this.temperature = temperature;
}

@JsonSetter("prob_precipitacion")
public void setNextRain(JsonNode nextRain) {

    if (nextRain != null) {
        if (nextRain.isTextual()) {
            rain.add(nextRain.asText());
        } else if (nextRain.isArray()) {
            for(JsonNode node : nextRain) {
                rain.add(node.asText());
            }
        }
    }
}

public List<String> getRain() {
    return rain;
}

}

I have to convert the string list into an int rigth? How can I do it?
I want to do this inside de "for" cycle is possible.
Regards.

>Solution :

This should do the trick:

public List<WeeklyForecast> convert(){

    AllForecast allForecast = Templates.restTemplate(restTemplate);
    List<NextDays> something = allForecast.getNextDays();
    List<WeeklyForecast> result = new ArrayList<WeeklyForecast>();
    
    
    for (int i=0; i< something.size(); i++){
        NextDays before = something.get(i);
        WeeklyForecast weekly = new WeeklyForecast(
          before.getData().getData(),
          before.getTemperature().getMaximumTemperature(),
          before.getTemperature().getMinimumTemperature(),
          before.getRain().stream().mapToInt(Integer::parseInt).max().orElse(-1));

        result.add(i,weekly);
    }
    
    return result;   
}

Leave a Reply