欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA中Comparable接口和自定義比較器示例講解

 更新時(shí)間:2020年10月13日 10:02:28   作者:飝鱻.  
這篇文章主要給大家介紹了關(guān)于JAVA中Comparable接口和自定義比較器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

自然排序

TreeSet集合在存儲(chǔ)數(shù)據(jù)時(shí)有一定的順序,它會(huì)將一些數(shù)據(jù)進(jìn)行比較,比較調(diào)用的是comparaTo()方法,該方法是在Comparable中定義的,自然排序要求TreeSet集合中存儲(chǔ)的數(shù)據(jù)必須實(shí)現(xiàn)Comparable接口,并且重寫(xiě)ComparaTo()方法

public class 自然排序 {
 public static void main(String[] args) {
 //定義一個(gè)TreeSet集合
 TreeSet treeSet = new TreeSet();
 Teacher t1 = new Teacher("Jack",19);
 Teacher t2 = new Teacher("King",20);
 Teacher t3 = new Teacher("Tom",19);
 Teacher t4 = new Teacher("Rose",20);
 treeSet.add(t1);
 treeSet.add(t2);
 treeSet.add(t3);
 treeSet.add(t4);
 System.out.println(treeSet);
 }
}
//定義Teacher類(lèi)實(shí)現(xiàn)Comparable接口
class Teacher implements Comparable{

 String name;
 int age;
 public Teacher(String name,int age){
 this.name = name;
 this.age = age;
 }
 //重寫(xiě)toString方法
 @Override
 public String toString() {
 return "Teacher{" +
  "name='" + name + '\'' +
  ", age=" + age +
  '}';
 }
 //先比較年齡在比較名字
 @Override
 public int compareTo(Object o) {
 Teacher teacher = (Teacher)o;
 if (this.age > teacher.age){
  return 1;
 }
 if (this.age == teacher.age){
  return this.name.compareTo(teacher.name);
 }
 return -1;
 }
}

運(yùn)行結(jié)果

[Teacher{name='Jack', age=19}, Teacher{name='Tom', age=19}, Teacher{name='King', age=20}, Teacher{name='Rose', age=20}]

定制排序

如果單單使用ComparaTo()不能滿(mǎn)足要求,這時(shí)可以通過(guò)在創(chuàng)建TreeSet集合的時(shí)候就自定義一個(gè)比較器來(lái)對(duì)元素進(jìn)行定制排序

import java.util.Comparator;
import java.util.TreeSet;

public class 定制排序 {
 public static void main(String[] args) {
 //在創(chuàng)建集合是傳入比較器
 TreeSet treeSet = new TreeSet(new MyComparable());
 treeSet.add("Jack");
 treeSet.add("Tom");
 treeSet.add("Helena");
 System.out.println(treeSet);
 }
}
//自定義的比較器
class MyComparable implements Comparator{

 @Override
 public int compare(Object o1, Object o2) {
 //以單詞的長(zhǎng)度來(lái)排序
 String s1 = (String)o1;
 String s2 = (String)o2;
 int resoult = s1.length() - s2.length();
 return resoult;
 }
}

結(jié)果

[Tom, Jack, Helena]

總結(jié)

到此這篇關(guān)于JAVA中Comparable接口和自定義比較器的文章就介紹到這了,更多相關(guān)JAVA中Comparable接口和自定義比較器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論