一.Comparator的使用
1.Arrays.sort
给基本类型的数组进行排序的方法,默认是实现升序,也可以通过方法写匿名类自定义实现升降序排序。
代码:
Arrays.sort(arr,new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {if(o1<o2)return 1;else return -1;}});
2.Collections.sort
给List类的可变长数组进行排序的方法,默认是实现升序,也可以通过方法覆写Comparator接口的compara自定义实现升降序排序。
代码:
Collections.sort(st,new Comparator<Integer>() {public int compare(Integer o1, Integer o2) {if(o1<o2)return 1;else return -1;}
});
二、Comparable的使用
用于自定义类继承该接口,该类的实例即可放入TreeSet中实现自定义排序。
代码:
//main方法
import rpg.Margicion;
import java.util.HashSet;
import java.util.TreeSet;public class Main {public static void main(String[] args) {HashSet<Margicion> s=new HashSet<>();Margicion r=new Margicion("b", 15, 20);Margicion d=new Margicion("a", 15, 20);TreeSet<Margicion> e=new TreeSet<>();e.add(r);e.add(d);for (Margicion margicion : e) {System.out.println(margicion.toString());}}
}
//自定义类需要继承Comparable接口,才能使用TreeSet
class Margicion extends Role implements Comparable<Margicion> {//类的相关初始化@Overridepublic void showfight(){System.out.println("挥剑攻击");System.out.println(super.blood);System.out.println(blood);}@Overridepublic String toString() {return "Margicion [blood=" + name + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + blood;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Margicion other = (Margicion) obj;if (blood != other.blood)return false;return true;}public Margicion(String name ,int blood ,int alt){this.alt=alt;super.blood=blood;this.name=name;}//覆写comparaTo方法,是调用方法的对象和括号里的元素比较,//大于返回1,小于返回-1,等于返回0,具体的操作可以自己实验@Overridepublic int compareTo(Margicion o) {if(name.compareTo(o.name)==-1){return 1;}else {return -1;}}}