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));
}