fork download
  1. package pgdp.streams;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.nio.file.Files;
  6. import java.time.LocalDate;
  7. import java.util.Arrays;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Set;
  11. import java.util.function.Function;
  12. import java.util.stream.Collectors;
  13. import java.util.stream.Stream;
  14.  
  15. public abstract class Temperatures {
  16. protected List<Temperature> data;
  17.  
  18. public Temperatures(String filepath) {
  19. data = parseCsvFile(new File(filepath));
  20. }
  21.  
  22. public Stream<Temperature> stream() {
  23. return data.stream();
  24. }
  25.  
  26. static private List<Temperature> parseCsvFile(final File csvFile) {
  27. try {
  28. return Files.lines(csvFile.toPath()).skip(1) // skip header of csv file
  29. .map(lineToTemperature) // convert line to DateTemperature
  30. .filter(elem -> elem != null) // filter null values due to parsing errors
  31. .collect(Collectors.toList());
  32. } catch (IOException e) {
  33. throw new RuntimeException("File " + csvFile + " not found.");
  34. }
  35. }
  36.  
  37. static private Function<String, Temperature> lineToTemperature = (line) -> {
  38. try {
  39. final String[] fields = line.split(","); // a CSV with comma-separated lines
  40. final LocalDate date = LocalDate.parse(fields[0]);
  41. final double avgTemperature = Double.parseDouble(fields[1]);
  42. // Skipping uncertainty
  43. final String city = fields[3];
  44. final String country = fields[4];
  45. final double latitude = Double.parseDouble(fields[5].substring(0, fields[5].length() - 1));
  46. final double longitude = Double.parseDouble(fields[6].substring(0, fields[6].length() - 1));
  47. return new Temperature(date, avgTemperature, city, country, latitude, longitude);
  48. } catch (Exception e) {
  49. return null;
  50. }
  51. };
  52.  
  53.  
  54. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:15: error: class Temperatures is public, should be declared in a file named Temperatures.java
public abstract class Temperatures {
                ^
Main.java:16: error: cannot find symbol
    protected List<Temperature> data;
                   ^
  symbol:   class Temperature
  location: class Temperatures
Main.java:22: error: cannot find symbol
    public Stream<Temperature> stream() {
                  ^
  symbol:   class Temperature
  location: class Temperatures
Main.java:26: error: cannot find symbol
    static private List<Temperature> parseCsvFile(final File csvFile) {
                        ^
  symbol:   class Temperature
  location: class Temperatures
Main.java:37: error: cannot find symbol
    static private Function<String, Temperature> lineToTemperature = (line) -> {
                                    ^
  symbol:   class Temperature
  location: class Temperatures
Main.java:47: error: cannot find symbol
            return new Temperature(date, avgTemperature, city, country, latitude, longitude);
                       ^
  symbol:   class Temperature
  location: class Temperatures
6 errors
stdout
Standard output is empty