private Map<String,Double> findMaxMetricValues(List<Map<String,String>> dataLines,int start,int end){
  assert (start < end);
  Map<String,Double> maxValuesMap=new HashMap<>();
  for (int index=start; index < end; index++) {
    Map<String,String> data=dataLines.get(index);
    for (    String metricKey : data.keySet()) {
      String dataValueString=data.get(metricKey);
      if (dataValueString.equals(NO_DATA) || !dataValueString.matches(DOUBLE_DATA_PATTERN)) {
        continue;
      }
      Double currentMaxValue=maxValuesMap.get(metricKey);
      Double dataValue=Double.valueOf(dataValueString);
      if (currentMaxValue == null) {
        maxValuesMap.put(metricKey,dataValue);
      }
 else {
        if (dataValue > currentMaxValue) {
          maxValuesMap.put(metricKey,dataValue);
        }
      }
    }
  }
  return maxValuesMap;
}

private Map < String , Double > findMaxMetricValues ( List < Map < String , String > > dataLines , int start , int end ) { assert ( start < end ) ; Map < String , Double > maxValuesMap = new HashMap < > ( ) ; for ( int index = start ; index < end ; index ++ ) { Map < String , String > data = dataLines . get ( index ) ; for ( String metricKey : data . keySet ( ) ) { String dataValueString = data . get ( metricKey ) ; if ( dataValueString . equals ( NO_DATA ) || ! dataValueString . matches ( DOUBLE_DATA_PATTERN ) ) { continue ; } Double currentMaxValue = maxValuesMap . get ( metricKey ) ; Double dataValue = Double . valueOf ( dataValueString ) ; if ( currentMaxValue == null ) { maxValuesMap . put ( metricKey , dataValue ) ; } else { if ( dataValue > currentMaxValue ) { maxValuesMap . put ( metricKey , dataValue ) ; } } } } return maxValuesMap ; }
given the data for a file , starting from ' start ' index until ' end ' index , calculate the maximum value for all metrics found . only numeric values are calculated .
