Я построил объект, который держит 2 ArrayList<Seating>
для бизнес-класса и эконом-класса.Поиск соседних сидений для бронирования поезда
Мой Рабочий Объект имеет ArrayList мест
List<Seating> business_class = new ArrayList<Seating>();
List<Seating> economy_class = new ArrayList<Seating>();
int bCount = 1;
int eCount = 10;
for(int i = 0; i < rowNumber; i++)
{
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "A"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "B"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "C"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "D"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "E"));
business_class.get(i).addSeat(new Seats(Integer.toString(bCount), "F"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "A"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "B"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "C"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "D"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "E"));
economy_class.get(i).addSeat(new Seats(Integer.toString(eCount), "F"));
bCount++;
eCount++;
}
1A/1B/1C || 1D/1E/1F
2A/2B/2C || 2D/2E/2F
Моя Java программа может добавить либо single passenger or a group
. Для моей групповой оговорки я должен искать наибольшее количество доступных adjacent seating
. Я придерживаюсь этого метода. Я уже закодировал это, но это смесь, и если и еще, если утверждения учитывают все возможные комбинации сидения. Метод содержит более 600 строк инструкций if-else ... Я прошу более простой и эффективный способ найти соседние места для групп.
Подробнее о соседних сидениях
Например, если все сиденья были пусты, то у меня было бы 6 смежных мест. В случае, если у меня есть 6 членов группы, я бы заполнил всю строку. В случае, если у меня 7 членов группы. 1 будет помещен в строку раньше, если любой из них доступен или после того, если любой из них начнется с (номер сиденья) A -> (seatNumber) F
Если есть пассажиры, расположенные на 1А и 1F, чем у меня будет 2 комплекта из 2 смежных 1B/1C и 1D/1E.
В случае, если существует группа из 4 человек, то эти 4 будут заполнять эти места. В случае, если существует группа из 3, то 1B/1C || 1D будет заполнен.
Это логика этого конкретного смежного метода посадки. Бизнес и экономический класс не имеют отношения к размещению.
Поиск управления свободным пространством. Это аналогичная проблема. – BluesSolo