根据其属性

时间:2015-09-23 13:37:42

标签: java

不确定如何正确标题但是这里。

我有一个类Plane,它创建了一个类PlaneSeat的数组。在我的案例中有12个对象

PlaneSeat包含int seatIdint customerIdboolean assigned属性。

我正在尝试为Plane类编写一个方法,该方法将返回按PlaneSeat排序的customerId个对象数组。

这是我目前所做的。现在我将返回void,因为我还没有准备正确的数据来构建新的PlaneSeat。现在的问题是,我的算法只是在相邻元素之间进行比较。不确定我可以使用什么样的内置函数来实现我想要的结果?

我查看了Sort ArrayList of custom Objects by property,虽然它是一个类似的方法,但它会修改我不想要的原始数据顺序。我只想获得一个独立的有序集并返回它而不修改原始顺序。

private void sortSeats()
    {
        int temp;
        Integer[] seatIdArray = new Integer[12];
        Integer[] custIdArray = new Integer[12];
        System.out.println("Inside sortSeats(), length =  " + seatIdArray.length);
        int count = 0;
        // prepare data
        for (int i = 0; i<seat.length;i++)
        {
            if (seat[i].isOccupied())
            {
                seatIdArray[count] = seat[i].getSeatID();
                custIdArray[count] = seat[i].getCustomerID();
                count ++;
            }
        }
        // sorting according to customerID
        for (int i = 1; i <seatIdArray.length; i++)
        {
            if (seatIdArray[i] == null) break;
            if (custIdArray[i-1] > custIdArray[i])
            {
                temp = custIdArray[i];
                custIdArray[i] = custIdArray[i-1];
                custIdArray[i-1] = temp;

                temp = seatIdArray[i];
                seatIdArray[i] = seatIdArray[i-1];
                seatIdArray[i-1] = temp;
            }
        }
        // displaying result
        for (int i = 0; i <seatIdArray.length; i++)
        {
            if (seatIdArray[i] == null) break;
            System.out.println("SeatID " + seatIdArray[i] + " assigned to CustomerID " + custIdArray[i]);
        }
    }

0 个答案:

没有答案