比較器排序Comparator的使用
-
存儲(chǔ)學(xué)生對(duì)象并遍歷,創(chuàng)建TreeSet集合使用帶參構(gòu)造方法
-
要求:按照年齡從小到大排序,年齡相同時(shí),按照姓名的字母順序排序
創(chuàng)建學(xué)生類:
package com.gather.set.treeset; public class Student1 { private String name; private int age; public Student1() { } public Student1(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
測(cè)試類:
package com.gather.set.treeset; import java.util.Comparator; import java.util.TreeSet; public class TreeSetDemo03 { public static void main(String[] args) { TreeSet<Student1> ts = new TreeSet<Student1>(new Comparator<Student1>() { //傳遞比較器接口 @Override public int compare(Student1 s1, Student1 s2) { int num = s1.getAge() - s2.getAge();//調(diào)方法訪問成員變量值 int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num; return num2; } }); Student1 s1 = new Student1("xishi", 29); Student1 s2 = new Student1("wangzhaojun", 28); Student1 s3 = new Student1("diaochan", 30); Student1 s4 = new Student1("yangyuhuan", 33); Student1 s5 = new Student1("lisi", 33); //把學(xué)生添加到集合 ts.add(s1); ts.add(s2); ts.add(s3); ts.add(s4); ts.add(s5); //遍歷 for (Student1 s : ts) { System.out.println(s.getName() + "," + s.getAge()); } } }
使用比較器進(jìn)行排序在創(chuàng)建TreeSet集合時(shí)要傳遞Comparator的實(shí)現(xiàn)類對(duì)象,重寫compare()方法,根據(jù)返回值進(jìn)行排序。在compare方法體里面使用對(duì)象調(diào)方法訪問成員變量比較年齡是否相同(返回值為0),不能直接訪問私有成員變量。當(dāng)年齡相同時(shí)按照姓名的字母進(jìn)行排序,如果不相同就直接按照年齡升序返回。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-473532.html
- 兩種比較方式總結(jié)
- 自然排序:自定義類要實(shí)現(xiàn)Comparatable接口,重寫comparaTo方法,根據(jù)返回值進(jìn)行排序
- 比較器排序:創(chuàng)建TreeSet集合時(shí)要傳遞Comparator的實(shí)現(xiàn)類對(duì)象,重寫compare(T o1,T o2)方法,根據(jù)返回值進(jìn)行排序
注意:在重寫方法時(shí),一定要注意排序規(guī)則必須按照要求的主要條件和次要條件來(lái)寫文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473532.html
到了這里,關(guān)于【TreeSet集合】比較器排序Comparator的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!