消息关闭
    暂无新消息!

Collection的疑问,求大神赐教

问题作者 : Borne2017-06-07发布
Collection引用指向ArrayList对象,为什么不能使用Collections.sort()
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class Sort {

public static void main(String[] args) {
Collection<Emp> c = new ArrayList<Emp>();
c.add(new Emp("Terry", 25,'m',6000));
c.add(new Emp("Allen", 21,'f',4000));
c.add(new Emp("Smith", 23,'m',3000));
Collections.sort((List<Emp>) c);
System.out.println(c);
}

}

class Emp implements Comparable<Emp>{
private String name;
private int age;
private double salary;
private char gender;
public Emp(String name,int age,char gender,double salary){
this.name = name;
this.age = age;
this.salary = salary;
this.gender = gender;
}
@Override
public int compareTo(Emp arg0) {
// TODO Auto-generated method stub
return (int) (this.salary-arg0.salary);
}
@Override
public String toString(){
return ""+name+","+age+","+salary+","+gender;
}
}


为什么非要强转成List接口类型的呢,sort为什么不支持Collection接口类型呢???

5个回答

︿ 2
sort 方法是用来排序的,  要排序 必然是有续集合才行, 
Collection 并没有有续这个特性(子接口Set 就是无续集合),  而List 有续集合. 所以必须是List   
︿ 2
因为这个api要求参数必须是List接口的实例,这么要求的原因如上面的楼层所说。
︿ 0
去看下源码吧,sort方法其实是List接口里面实现的。collections内部也只是调用了List.sort方法