当前位置: 首页 > 知识库问答 >
问题:

如何使用比较器对ArrayList进行排序?[副本]

景令秋
2023-03-14
public static Comparator<Student> getCompByName()
public static Comparator<Student> getCompByName()
{   
 Comparator comp = new Comparator<Student>(){
     @Override
     public int compare(Student s1, Student s2)
     {
         return s1.name.compareTo(s2.name);
     }        
 };
 return comp;
}  

我需要测试的地方

public static void main(String[] args)
{
    // TODO code application logic here

    //--------Student Class Test-------------------------------------------
    ArrayList<Student> students = new ArrayList();
    Student s1 = new Student("Mike");
    Student s2 = new Student("Hector");
    Student s3 = new Student("Reggie");
    Student s4 = new Student("zark");
    students.add(s1);
    students.add(s2);
    students.add(s3);
    students.add(S4);

    //Use getCompByName() from Student class to sort students

有人能告诉我如何使用main中的getCompByName()按名称对ArrayList进行排序吗?我对比较器很陌生,对它们的用法很难理解。该方法返回一个比较器,所以我不确定这将如何实现。我知道我需要使用getCompByName()来排序,我只是不知道如何实现它。

共有1个答案

施默
2023-03-14

使用collections.sort(List,Comparator)方法:

Collections.sort(students, Student.getCompByName());

另外,在您的代码中,在声明列表时,最好使用列表接口:

List<Student> students = new ArrayList();

您还可以通过使用student[]并将其传递给ArrayList构造函数来收紧代码:

public static void main(String[] args) {
    Student[] studentArr = new Student[]{new Student("Mike"),new Student("Hector"), new Student("Reggie"),new Student("zark")};
    List<Student> students = new ArrayList<Student>(Arrays.asList(studentArr));
    Collections.sort(students, Student.getCompByName());

    for(Student student:students){
        System.out.println(student.getName());
    }
}
 类似资料:
  • 我正试图根据员工的加入日期对他们的列表进行排序。下面是我的员工类。 下面是我的比较器类:

  • 所以我正在使用一些预先存在的比较器,它们比较两个元组中的某些值,如果第一个大于第二个,则返回true,否则返回false。这是其中之一的代码: 现在,我有一个字典,里面有许多上面比较的类型的元组条目。我想以相反的顺序对它们进行排序,但我真的不知道如何完成。我在想这样的事情: 但是我不知道向比较器传递什么,因为每个比较器都有两个参数(subInfo1、subInfo2)。我不能更改比较器函数。

  • 我需要整理一份arrayList。我可以使用比较器并重写比较函数进行排序。或者我可以自己编写一个合并排序函数,对ArrayList进行排序。 我在某处读到比较器排序使用冒泡排序算法。因为合并排序的复杂度较低,所以我选择合并排序,而不是使用更容易实现的比较器。

  • 我想使用比较器对String类型的ArrayList进行排序。我只找到了如何在ArrayList存储对象时执行此操作的示例。 我有一个包含10个符号的字符串数组列表,最后5个符号是数字。我想按照每个字符串末尾的数字的升序来求解数组列表。我该怎么做? 谢谢

  • 我必须写一个程序 > 使用一个类ShopItem,其中一个项目的属性是:barCodeNumber、itemName、price和QuantityInStock。创建5个ShopItems实例(item1、item2、item3、item4和item5)的属性值为我自己的值。 为ShopItem使用一个比较器(BarcodeParator),它允许基于它们的barCodeNumber对ShopIt

  • 问题内容: 尝试根据元素字符串长度对数组进行排序时,我被编译错误震惊。我有一套开始, 我理想地想排序 所以我有一个比较器类型 然后我打电话给全班 但随后,它引发了两个编译错误: 任何解决问题的线索,我将不胜感激。 问题答案: 您需要指定一个类型参数,以使实现生效。 在Java 1.7和更高版本中,您还可以将此方法的主体简化为: 另外,对对象进行排序。由于要对数组进行排序,因此应使用: