Список доступа от одного метода к другому - PullRequest
1 голос
/ 04 марта 2020

В моем методе loadData () я читаю и сохраняю данные из текстового файла со следующей структурой:

1946-01-12;07:00:00;-1.3;G
1946-01-12;13:00:00;0.3;G
1946-01-12;18:00:00;-2.8;G
1946-01-13;07:00:00;-6.2;G
1946-01-13;13:00:00;-4.7;G
1946-01-13;18:00:00;-4.3;G

Я храню дату, время и температуру в переменных dateTime, Time и температура соответственно. Интересно, как я могу получить доступ к этим переменным, например dateTime в другом методе public List<String> missingValues(LocalDate dateFrom, LocalDate dateTo) {}? Я хочу создать новый список в этом новом методе с такими же значениями, как в dateTime, например: List<LocalDate> list2 = Arrays.asList(dateTime); Возможно ли это?

public class WeatherDataHandler {

  public WeatherDataHandler(LocalDate dateTime,LocalTime Time, double temperature, String tag) {
  }

  private static List<WeatherDataHandler> weatherData = new ArrayList<>();

  public void loadData(String filePath) throws IOException {
    //Read all data
    List<String> fileData = Files.readAllLines(Paths.get("filePath"));
    System.out.println(fileData);
        for(String str : fileData) {
        List<String> parsed = parseData(str);
        LocalDate dateTime = LocalDate.parse(parsed.get(0));
        LocalTime Time = LocalTime.parse(parsed.get(1));
        double temperature = Double.parseDouble(parsed.get(2));
        String tag = parsed.get(3);

        WeatherDataHandler weather = new WeatherDataHandler(dateTime, Time, temperature, tag);
        weatherData.add(weather);
        System.out.println(dateTime);}
    }

  private static List<String> parseData(String s) {
    return Arrays.asList(s.split(";"));

  }

  public List<String> missingValues(LocalDate dateFrom, LocalDate dateTo) {

    return null;
  }
}

1 Ответ

0 голосов
/ 04 марта 2020

Поскольку вы сохранили значения в поле stati c с именем weatherData, вы можете просто получить к ним доступ, непосредственно обращаясь к полю weatherData.

Вы создаете новый объект WeatherDataHandler. Однако вы не сохраняете значения, переданные конструктору в этом объекте. Возможно, вам будет проще, если вы создадите отдельный класс для хранения сведений о погоде.

Например, класс для хранения одной строки из файла:

public class Weather {

    private LocalDate dateTime;
    private LocalTime time;
    private double temperature;
    private String tag;

    public Weather(LocalDate dateTime, LocalTime time, double temperature, String tag) {
        this.dateTime = dateTime;
        this.time = time;
        this.temperature = temperature;
        this.tag = tag;
    }

    public LocalDate getDateTime() {
        return dateTime;
    }

    public void setDateTime(LocalDate dateTime) {
        this.dateTime = dateTime;
    }

    public LocalTime getTime() {
        return time;
    }

    public void setTime(LocalTime time) {
        this.time = time;
    }

    public double getTemperature() {
        return temperature;
    }

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

    public String getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }
}

И изменения в WeatherDataHandler для использования Погодный класс:

public class WeatherDataHandler {

    // You probably don't need this to be static
    private List<Weather> weatherData = new ArrayList<>();

    public void loadData(String filePath) throws IOException {
        //Read all data
        List<String> fileData = Files.readAllLines(Paths.get(filePath));
        System.out.println(fileData);
        for(String str : fileData) {
            List<String> parsed = parseData(str);
            LocalDate dateTime = LocalDate.parse(parsed.get(0));
            LocalTime Time = LocalTime.parse(parsed.get(1));
            double temperature = Double.parseDouble(parsed.get(2));
            String tag = parsed.get(3);

            Weather weather = new Weather(dateTime, Time, temperature, tag);
            weatherData.add(weather);
            System.out.println(dateTime);}
    }

    // You probably don't need this to be static
    private List<String> parseData(String s) {
        return Arrays.asList(s.split(";"));

    }

    public List<String> missingValues(LocalDate dateFrom, LocalDate dateTo) {
        // access the weatherData directly
        List<String> values = new ArrayList<>();
        for (Weather weather : weatherData) {
            values.add(weather.getDateTime().toString());
        }
        return values;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...