【问题标题】:Sorting in array java [duplicate]在数组java中排序[重复]
【发布时间】:2019-08-11 08:23:22
【问题描述】:

我有这个代码:

Flight.java

public static Flight[] sortFlight(Flight []f)
{
    for(int i =f.length;i>=0;--i)
    {
        for(int j=0;j<=i;j++) 
        {
            int myFlightNum1 = f[i].getFlight_number();
            int myFlightNum2 = f[j].getFlight_number();

        if(myFlightNum1>myFlightNum2)
            {
            int temp = f[i].getFlight_number();
            f[i].setFlight_number(myFlightNum2);
            f[j].setFlight_number(temp);

            }
        }
    }
return (f);

我想根据航班号对数组进行排序。我试过Arrays.sort,但一直说不能转换为java.lang.comparable。

FlightTest.java

public static void main(String[] args) {
    Flight[] f = {

            new Flight("US Air","Boston","Los Angeles", 347),
            new Flight("Delta","Pheladelphia","London",212),
            new Flight("Continental","Atlanta","Chicago",822)
            };

    System.out.println("This flight information is sorted based on flight number:");

    for (Flight flights : f)
        {

        System.out.println(flights);
        }

}

【问题讨论】:

    标签: java algorithm oop for-loop if-statement


    【解决方案1】:

    您可以在sort 方法中提供Comparator 作为第二个参数:

    Arrays.sort(f, Comparator.comparing(Flight::getFlight_number));
    

    Comparable接口真的不是必须的。

    【讨论】:

      【解决方案2】:

      一种解决方案是让您的Flight 类实现comparable 接口。这将保证它必须实现compareTo() 方法,您必须在其中定义如何将一个Flight 对象与另一个对象进行比较。

      【讨论】:

        【解决方案3】:

        如果您的 Flight 对象实现了 Comparable 并且您可以设置自己的逻辑来比较您需要的字段,那么您可以使用 Arrays.sort() 函数。示例见此处:https://www.tutorialspoint.com/java/util/arrays_sort_super.htm

        【讨论】:

          猜你喜欢
          • 2012-10-20
          • 2017-02-25
          • 2013-10-26
          • 1970-01-01
          • 1970-01-01
          • 2017-02-14
          • 1970-01-01
          • 2015-07-18
          • 2018-05-27
          相关资源
          最近更新 更多