gpt4 book ai didi

java - Comparator 接口(interface)如何工作以及如何在内部调用 compare() 方法

转载 作者:行者123 更新时间:2023-11-30 06:13:53 25 4
gpt4 key购买 nike

简单解释一下Comparator接口(interface)在内部是如何工作的,它是如何通过JVM调用compare()方法的。在 Collections.sort() 方法中,我们将第一个参数作为 Employee 对象的列表传递,另一个参数传递我们的 NameComparator 类对象,该类对象正在实现 Comparator 方法以将员工姓名缩短为升序。所以我想知道,compare() 方法实际上是如何使用两个参数作为 Employee 对象调用的。因为我们没有调用 compare() 方法。和其他概念,比如它实际上是如何在内部运作的。下面有一段代码。

public class Test
{
public static void main(String[] args)
{
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("Manish"));
list.add(new Employee("Amit"));
list.add(new Employee("Krishna"));

// passing the list of employee obj and NameComparator class object.
Collections.sort(list, new NameComparator());

System.out.println(list);
}
}

class Employee
{
String name = null;

public Employee(String name)
{
this.name = name;
}

@Override
public String toString()
{
return this.name;
}
}

class NameComparator implements Comparator<Employee>
{
@Override
public int compare(Employee o1, Employee o2)
{
Employee emp1 = (Employee) o1;
Employee emp2 = (Employee) o2;
return emp1.name.compareTo(emp2.name);
}
}

最佳答案

发件人:http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html

“排序算法是一种改进的合并排序(如果低子列表中的最高元素小于高子列表中的最低元素,则合并被忽略)。该算法提供有保证的 n log(n) 性能。这实现将指定的列表转储到数组中,对数组进行排序,并遍历列表,从数组中的相应位置重置每个元素。这避免了尝试对链表进行就地排序而导致的 n2 log(n) 性能”

排序代码如下:

http://www.docjar.com/html/api/java/util/Collections.java.html

关于java - Comparator 接口(interface)如何工作以及如何在内部调用 compare() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31239396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com