Java 按其中一个对象对arraylist中的对象进行排序

Java 按其中一个对象对arraylist中的对象进行排序,java,sorting,nullpointerexception,Java,Sorting,Nullpointerexception,我已经多次发现这个问题,我尝试了他们的所有解决方案,当我提交它们时,我的代码因“空指针异常”而失败 /** *问题5:创建一个名为“Fleet”的公共类,其中包含私有实例变量“predientable”和 *每种int类型都是“复杂的”。您可以添加任何其他想要添加的方法和变量 *这个班。 * *在Fleet之外(在问题集中类中)编写一个名为“sortFleet”的公共静态方法 *它将震源组的ArrayList作为参数并返回void。此方法将进行排序 *变量“复杂”的输入顺序递增 */ 公共级船

我已经多次发现这个问题,我尝试了他们的所有解决方案,当我提交它们时,我的代码因“空指针异常”而失败

/**
*问题5:创建一个名为“Fleet”的公共类,其中包含私有实例变量“predientable”和
*每种int类型都是“复杂的”。您可以添加任何其他想要添加的方法和变量
*这个班。
* 
*在Fleet之外(在问题集中类中)编写一个名为“sortFleet”的公共静态方法
*它将震源组的ArrayList作为参数并返回void。此方法将进行排序
*变量“复杂”的输入顺序递增
*/
公共级船队{
私人关系相当复杂;
公共车队(国际起点){
这是开始;
}
公共int getPrecious(){
把这个还给我;
}
@凌驾
公共字符串toString(){
返回“+”复杂;
}
}
公共无效排序列表(ArrayList a){
Collections.sort(一个新的Comparator(){
@凌驾
公共整数比较(车队o1、车队o2){
longa1=新Long(o1.getPrecious());
longa2=新长(o2.getPrecious());
//返回a1。比较(a2);
返回长。比较(a1,a2);
}
}); 
}

代码是有效的,我用了很多不同的方法来实现它。但当我提交时,它说的是同样的事情。每一次。请帮助

要按复杂程度对车队进行排序,您必须使对象实现可比较接口并重写compareTo()方法,如下所示

机队级别: 编辑:JAVA 8方法: 删除Fleet类中的可比较接口和重写,您可以像这样排序,返回相同的预期输出:

public static void sortFleet(ArrayList<Fleet> arrayFleet) {
        Collections.sort(arrayFleet, Comparator.comparingInt(Fleet::getComplicated));
}
publicstaticvoidsortfleet(arraylistarrayfleet){
Collections.sort(arrayFleet、Comparator.comparingInt(Fleet::getcomplex));
}

盒装的
Long
s是什么?为什么不直接返回Integer.compare(o1.getPrecious(),o2.getPrecious())?或者做
a.sort(Comparator.comparingInt(Fleet::getprice))。如果解决了您的问题,请将其标记为anwered@wallischpls@wallischpls还有,请拿这个。“这不是一个讨论论坛,没有闲聊。”。不需要说“谢谢”或“请帮忙”。
public class Fleet implements java.lang.Comparable<Fleet>{

    private int considerable, complicated;

    public Fleet() {
        super();
    }

    public Fleet(int considerable, int complicated) {
        super();
        this.considerable = considerable;
        this.complicated = complicated;
    }

    public int getConsiderable() {
        return considerable;
    }

    public void setConsiderable(int considerable) {
        this.considerable = considerable;
    }

    public int getComplicated() {
        return complicated;
    }

    public void setComplicated(int complicated) {
        this.complicated = complicated;
    }

    @Override
    public int compareTo(Fleet fleet) {
        int compareComplicated = ((Fleet)fleet).getComplicated();
        return this.complicated - compareComplicated;
    }

    @Override
    public String toString() {
        return "Fleet [considerable=" + considerable + ", complicated=" + complicated + "]";
    }


}
import java.util.ArrayList;
import java.util.Collections;

public class SortFleet {

    public static void main(String[] args) {
        ArrayList<Fleet> arrayFleet = new ArrayList<Fleet>();
        Fleet fleetA = new Fleet(1, 2);
        Fleet fleetB = new Fleet(4, 12);
        Fleet fleetC = new Fleet(3, 5);
        Fleet fleetD = new Fleet(3, 50);
        Fleet fleetE = new Fleet(2, 3);
        Fleet fleetF = new Fleet(2, 50);


        arrayFleet.add(fleetA);
        arrayFleet.add(fleetB);
        arrayFleet.add(fleetC);
        arrayFleet.add(fleetD);
        arrayFleet.add(fleetE);
        arrayFleet.add(fleetF);


        System.out.println("Before sort:");

        for ( Fleet f : arrayFleet)
        {
            System.out.println(f);
        }

        System.out.println();

        sortFleet(arrayFleet);

        System.out.println("After sort:");
        for ( Fleet f : arrayFleet)
        {
            System.out.println(f);
        }
    }

    public static void sortFleet(ArrayList<Fleet> arrayFleet) {
        Collections.sort(arrayFleet);
    }

}
Before sort:
Fleet [considerable=1, complicated=2]
Fleet [considerable=4, complicated=12]
Fleet [considerable=3, complicated=5]
Fleet [considerable=3, complicated=50]
Fleet [considerable=2, complicated=3]
Fleet [considerable=2, complicated=50]

After sort:
Fleet [considerable=1, complicated=2]
Fleet [considerable=2, complicated=3]
Fleet [considerable=3, complicated=5]
Fleet [considerable=4, complicated=12]
Fleet [considerable=3, complicated=50]
Fleet [considerable=2, complicated=50]
public static void sortFleet(ArrayList<Fleet> arrayFleet) {
        Collections.sort(arrayFleet, Comparator.comparingInt(Fleet::getComplicated));
}