利用Java中的现有方法实现对集合元素进行排序
利用Java中的现有方法实现对集合元素进行排序。
(1) Collections.sort(集合名); 如果参与排序的集合中存储的是自定义类型的对象,则对象对应类需要实现java.lang.Comparable接口,同时实现接口中 compareTo(Tt)方法指定排序规则。—》内置比较器。
public class TestSort { public static void main(String[] args) { ArrayList list = new ArrayList (); list.add(new Student("zihao",38,99.0)); list.add(new Student("jingjing",18,95.0)); list.add(new Student("zihang",48,89.0)); list.add(new Student("zibo", 42, 88.0)); list.add(new Student("jintao", 42, 90.0)); list.add(new Student("wenwen", 42, 89.0)); list.add(new Student("awei", 42, 89.0)); Collections.sort(list); for(Student s:list) { System.out.println(s); } } } public class Student implements Comparable{ private String name; private Integer age; private Double score; public Student() { super(); } public Student(String name,Integer age,Double score) { super(); this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getScore() { return score; } public void setScore(Double score) { this.score = score; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", score=" + score + "]"; } @ Override public int compareTo(Student s) { /* 将 this 和 s 对象进行比较 * 指定排序规则:age * this.age 大于 s.age 1 * this.age 小于 s.age -1 * this.age 等 于 s.age 0 * 如果年龄相同时,再按照 成绩进行 排序 */ if(this.age > s.age) { return 1; }else if(this.ages.score) { return 1; }else if(this.score(2) List接口中提供 默认方法 sort(Comparator c):如果参与排序的集合存储的是自定义类型的对象,则需要在参与比较的对象以外的地方定义一个匿名内部类(或是Lambda表达式)实现 java.util.Comparator接口,同时实现 compare(T t1,Tt2)方法指定排序规则。—》外置比较器.
public class TestSort2 { public static void main(String[] args) { List list = new ArrayList(); list.add(new Worker("zihao",38,20000.0)); list.add(new Worker("awei",35,19000.0)); list.add(new Worker("xingwang",48,25000.0)); list.add(new Worker("jintao",37,18000.0)); // 制定的比较规则 -->匿名内部类 // Comparator c = new Comparator() { // public int compare(Worker w1,Workerw2) { // /* 将 w1 和 w2进行 比较:按照年龄 // * w1.age 大于w2.age 1 // * w1.age 小于w2.age -1 // * 等于0 // */ // if(w1.getAge()>w2.getAge()) { // return 1; // }else if(w1.getAge() c = (w1,w2) ->{ if(w1.getAge()>w2.getAge()) { return 1; }else if(w1.getAge()补充:Collections工具类 (1) 位于java.util包中对集合元素进行操作的工具类。
(2) 功能方法:
a. static void reverse(List list):将集合中元素进行倒置 b. static void shuffle(List list):对集合中元素进行随机显示 c. static void sort(List list):对集合元素进行排序。
注:如果参与排序的集合中存储的是自定义类型的对象,则对象对应类需要实现java.lang.Comparable接口,同时实现接口中 compareTo方法指定排序规则。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~