我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,Collections.sort(vehiclearray);但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情?
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"); }
排序部分可以通过实现custom来完成Comparator<Vehicle>。
Comparator<Vehicle>
Collections.sort(vehiclearray, new Comparator<Vehicle>() { public int compare(Vehicle v1, Vehicle v2) { return v1.getEmail().compareTo(v2.getEmail()); } });
此匿名类将用于根据其对应电子邮件的字母顺序对Vehicle对象进行ArrayList排序。
Vehicle
ArrayList
升级到Java8还可以使您使用方法参考以更简单的方式实现此目的:
Collections.sort(vehiclearray, Comparator.comparing(Vehicle::getEmail));