首页 > 代码库 > sort()与Comparable接口
sort()与Comparable接口
sort()一般用于 对象 数组或者List类(Set不可)排序,需要类实现Comparable接口
void static sort(List list)
根据元素的自然顺序 对指定列表按升序进行排序
是属于Collections类的一个静态方法,也就是说可以这样调用:
int[] a={.....};
Collections.sort(a);
或者:
ArrayList a=new ArrayList(1,2,3,4....);
Collections.sort(a);
Arrays.sort(a); 用于数组
Collections.sort(a); 用于容器
compareTo的约定是:
将当前这个对象与指定的对象进行顺序比较,当该对象小于、等于或大于指定对象时,分别返回一个负整数、0或正整数,如果无法进行比较,则抛出ClassCastException异常。
import java.util.*; public class EmployeeSortTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee[] staff = new Employee[3]; staff[0] = new Employee("harry Hacker",35000); staff[1] = new Employee("carl cracke",75000); staff[2] = new Employee("tony Tester",38000); Arrays.sort(staff);//sort方法可以实现对对象数组排序,但是必须实现 Comparable接口 for(Employee e: staff) System.out.println("id="+e.getId()+" name="+e.getName()+ ".salary="+e.getSalary()); } } class Employee implements Comparable<Employee> { public Employee(String n,double s) { name = n; salary = s; Random ID = new Random(); id = ID.nextInt(10000000); } public int getId() { return id; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary *byPercent/100; salary+=raise; } public int compareTo(Employee other) { if(id<other.id)//这里比较的是什么 sort方法实现的就是按照此比较的东西从小到大排列 return -1; if(id>other.id) return 1; return 0; } private int id; private String name; private double salary; }
sort()与Comparable接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。