029_排序
Posted BandariFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了029_排序相关的知识,希望对你有一定的参考价值。
同java一样:
在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口。
让需要进行排序的对象实现Comparable接口,重写其中的compareTo(T o)方法
The implementation of this method should return the following values:
- 0 if this instance and objectToCompareTo are equal
- > 0 if this instance is greater than objectToCompareTo
- < 0 if this instance is less than objectToCompareTo
看例子,这是Comparable接口的示例实现。
global class Employee implements Comparable { public Long id; public String name; public String phone; // Constructor public Employee(Long i, String n, String p) { id = i; name = n; phone = p; } // Implement the compareTo() method global Integer compareTo(Object compareTo) { Employee compareToEmp = (Employee)compareTo; if (id == compareToEmp.id) return 0; if (id > compareToEmp.id) return 1; return -1; } }
测试代码:
List<Employee> empList = new List<Employee>(); empList.add(new Employee(101,‘Joe Smith‘, ‘4155551212‘)); empList.add(new Employee(101,‘J. Smith‘, ‘4155551212‘)); empList.add(new Employee(25,‘Caragh Smith‘, ‘4155551000‘)); empList.add(new Employee(105,‘Mario Ruiz‘, ‘4155551099‘)); // Sort using the custom compareTo() method empList.sort(); // Write list contents to the debug log System.debug(empList); // Verify list sort order. System.assertEquals(‘Caragh Smith‘, empList[0].Name); System.assertEquals(‘Joe Smith‘, empList[1].Name); System.assertEquals(‘J. Smith‘, empList[2].Name); System.assertEquals(‘Mario Ruiz‘, empList[3].Name);
以上是关于029_排序的主要内容,如果未能解决你的问题,请参考以下文章
Java每日一题——>剑指 Offer II 029. 排序的循环链表
Java每日一题——>剑指 Offer II 029. 排序的循环链表