一尘不染

按字母顺序对对象的ArrayList进行排序

java

我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList
进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,Collections.sort(vehiclearray);但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情?

这是我到目前为止的代码:

public static void printallsort(ArrayList<vehicle> vehiclearray){

   ArrayList<vehicle> vehiclearraysort = new ArrayList<vehicle>();
   vehiclearraysort.addAll(vehiclearray);

 //Sort
   for(int i = 0; i < vehiclearraysort.size(); i++) 
   if ( vehiclearray.get(i).getEmail() > vehiclearray.get(i+1).getEmail())

//Printing 
   for(i = 0; i < vehiclearraysort.size(); i++)           
   System.out.println( vehiclearraysort.get(i).toString() + "\n");

}

阅读 398

收藏
2020-12-03

共1个答案

一尘不染

排序部分可以通过实现custom来完成Comparator<Vehicle>

Collections.sort(vehiclearray, new Comparator<Vehicle>() {
    public int compare(Vehicle v1, Vehicle v2) {
        return v1.getEmail().compareTo(v2.getEmail());
    }
});

此匿名类将用于根据其对应电子邮件的字母顺序对Vehicle对象进行ArrayList排序。

升级到Java8还可以使您使用方法参考以更简单的方式实现此目的:

Collections.sort(vehiclearray, Comparator.comparing(Vehicle::getEmail));
2020-12-03