Java 为列车预订寻找相邻座位

Java 为列车预订寻找相邻座位,java,Java,我已经为商务舱和经济舱构建了一个包含2 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 < rowNumb

我已经为商务舱和经济舱构建了一个包含
2 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++;
}
List business_class=new ArrayList();
List economy_class=new ArrayList();
int bCount=1;
int eCount=10;
for(int i=0;i

1A/1B/1C|1D/1E/1F

2A/2B/2C|2D/2E/2F

我的java程序可以添加一名
单人乘客或一组
。对于我的团体预订,我必须寻求最大数量的可用
相邻座位
。我对这种方法一窍不通。我已经对它进行了编码,但是它是一个混合语句,if和elseif语句考虑了所有可能的座位组合。该方法有600多行if-else语句。。。我在寻求一种更简单、更有效的方法,为团体找到相邻的座位

有关相邻座位的更多详细信息
例如,如果所有的座位都是空的,那么我会有6个相邻的座位。如果我有6个组成员,我将填充整行。如果我有7个小组成员。如果有的话,1将被放在前面一行,如果有的话,将被放在后面一行,从(座位号)A->(座位号)F开始

如果有乘客在1A和1F,我会有两套相邻的座位1B/1C和1D/1E。
如果有一组4人,那么这4人将填补这些席位。如果有一组3人,则填写1B/1C | | 1D


这就是这种特殊相邻座位方法的逻辑。商务舱和经济舱在座位上没有关系。

Si我建议您:

创建一个方法
seat.isFree()
如果座椅空闲,则返回
true
,否则返回
false

然后迭代类中的每一行座位,并查找行中第一个空闲的
Seat
。它看起来像:

Seat freeSeat = null;
int length = 0;
for( each line ){
    for( each seat){
        Seat seat = seat.get(indexInLine);
        if(seat.isFree()){
            if(freeSeat == null){
                freeSeat = seat;
                length = 1;
            } else
                length++;
        } else {
            if(freeSeat != null){
                yourList.add(seat, length);
            }
            freeSeat = null;
        }
    }
    if(freeSeat != null){//So if the last seat of the line is also free add it to the free seat list
        yourList.add(seat, length);
    }
}
您的
列表
的目的是包含
座位
int
对象的列表,这些对象将表示第一个空闲
座位
及其后一行的空闲座位数(包括第一个)

然后,您将获得列表中所有相邻的空闲座位


您只需选择列表中的第一个元素,该元素的(int值)长度对您的所有组都很重要,如果没有,请在找不到相邻座位时将组分开。

搜索可用空间管理。这是一个类似的问题。行
yourList的目的是什么。添加(seat,length)
目的是创建一个元素列表,其中包含每行的第一个空闲
seat
,以及他在该行之后的空闲座位数。