Запланированный календарь на 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 в определенном порядке, но это намного сложнее и работает со списками.
Антилогарифм