Запланированный календарь на Java

Может ли кто-нибудь объяснить, откуда поступят входные данные в этом скелетном коде.

Скелетный код выглядит следующим образом:

Data.java

import java.util.Date;
import java.util.List;

public interface Data {

// Return a list of all appointments at the given location (at any time)
// If there are no such appointments, return an empty list
// Throws IllegalArgumentException if the argument is null
public List<Schedule> getSchedule(String location);

// Return the next appointment at or after the given time (in any location)
// If there is no such appointment, return null
// Throws IllegalArgumentException if the argument is null
public Schedule getNextSchedule(Date when);

// Return the next appointment at or after the given time, at that location
// If there is no such appointment, return null
// Throws IllegalArgumentException if any argument is null
public Schedule getNextSchedule(Date when, String location);

// Create a new appointment in the calendar
// Throws IllegalArgumentException if any argument is null
public void add(String description, Date when, String location);

// Remove an appointment from the calendar
// Throws IllegalArgumentException if the argument is null
public void remove(Schedule schedule);
}

Calendar.java

import java.util.Date;
import java.util.List;

public class Calendar implements Data {

// We will use this when we test
public Calendar() {
}

@Override
public List<Schedule> getSchedule(String location) {
    // TODO
    return null;
}

@Override
public Schedule getNextSchedule(Date when) {
    if(when == null) {
        throw new IllegalArgumentException("time was null");
    }
    // TODO
    return null;
}

@Override
public Schedule getNextSchedule(Date when, String location) {
    // TODO
    return null;
}

@Override
public void add(String description, Date when, String location) {
    // TODO
}

@Override
public void remove(Schedule schedule) {
    // TODO
}
}

Schedule.java

import java.util.Date;

public interface Schedule {

public String getDescription();

public String getLocation();

public Date getStartTime();

}

Я также хотел бы знать:

  • с чего начать, я попытался начать, но я не уверен, что возвращать в первом разделе todo, помеченном getSchedule. Я знаю, что не могу вернуть местоположение, потому что метод вызывает возвращение типа List (?).

1 ответ

<> Используются в таких классах, как коллекции и карты. означает, что существует коллекция (например, ArrayList), которая может содержать элементы типа Schedule. Если у вас есть карта наподобие HashMap, вам нужно поместить в них два типа <>: ключ (например, целое число) и объект (например, строку)

HashMap<Integer, String>

Теперь вы можете получить элемент с карты, используя

thisIsMyMap.get(7);

Этот метод возвращает экземпляр Type Type Schedule с ключом 7, сохраненный в Integer. Вы должны использовать Integer вместо int, потому что Map или List не могут содержать простые типы, такие как int, double, boolean.

Теперь к вашей проблеме: прежде чем вы сможете что-то вернуть в методе getSchedule(String location), у вас должен быть список для хранения ваших расписаний, например:

ArrayList<Schedule> schedules = new ArrayList<Schedule>();

затем вы можете перебрать список в методе getSchedule(String location) и записать все записи с правильным расположением в другом списке и вернуть его:

@Override
public List<Schedule> getSchedule(String location) {
    ArrayList<Schedule> right = new ArrayList<Schedule>();
    for(int i = 0; i<schedules.size(); i++)
    {
        if(schedules.get(i).getLocation().equals(location))
            right.add(schedules);
    }
    return right;
}

Вы написали, что хотите использовать HashTrees. Я думаю, что лучше и быстрее, если вы просто используете ArrayList. Да, вы можете разместить HashTrees в определенном порядке, но это намного сложнее и работает со списками.

Антилогарифм

Другие вопросы по тегам