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
(#换成@)。