你的位置:首页 > 软件开发 > Java > 集合中元素大小的可排序问题

集合中元素大小的可排序问题

发布时间:2016-02-06 14:00:03
package CollectionPart;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class CollectionSort { public ...
package CollectionPart;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class CollectionSort {    public static void main(String[] args) {        List myList = new ArrayList();    myList.add("3");    myList.add("1");    myList.add("5");    myList.add("sdf");    myList.add("fwef");    Collections.sort(myList);    for (Object object : myList) {      System.out.println(object);    }    //这样,集合就帮助我们进行了排序的操作。        System.out.println("------------");        //依然是,之前遇到的那个问题。如果不再是字符串或者基本数据类型,如果是我们自己定义的一个实体对象类型,那么如何比较两个元素的大小呢?    //刚刚有写过一个 员工2类,那里面重写了equals() 和hashCode() 方法,那不妨试试员工2类。    Employee_3 e1 = new Employee_3("1","lifei",23,"2016-06-03");    Employee_3 e2 = new Employee_3("2","lifei2",24,"2016-06-03");    Employee_3 e3 = new Employee_3("3","lifei3",25,"2016-06-03");        List<Employee_3> myList2 = new ArrayList();    myList2.add(e3);    myList2.add(e1);    myList2.add(e2);    Collections.sort(myList2);    for (Employee_3 employee_2 : myList2) {      System.out.println(employee_2);    }    System.out.println("从输出结果上很容易看出来,是按照我们添加的顺序输出的,事实上我们也没有进行排序.从结果上看原来的员工2类,改成了现在的3.这是因为,在写sort的时候,就不允许了,这是因为编译器,在编译过程中发现,当前类也就是 employee_2中并不具有比较器。");    /**     * 所以,如果想要对一个我们自己实现的对象进行排序的话,必须要让被排序的实体拥有一个比较器。也就是说对于我们所写的实体如果让他符合set集合的话,需要告诉编译器到底什么相等,两个实体才算相等,为了让相同类型的元素进行排序,我们需要指定怎么样才算是大,怎么样才算是小。     * 这样就需要一个,比较器,有两种实现形式,方式1:让实体类实现comparable 接口。     * 同是为了排序,如果实体类已经不可更改,或者 最好不用去触碰原来的代码,那么重写一个,比较器类也是不错的选择。     */    Collections.sort(myList2,new MyComparator());    for (Employee_3 employee_3 : myList2) {      System.out.println(employee_3);    }  }}

原标题:集合中元素大小的可排序问题

关键词:排序

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。