Java学习:Comparator和Comparable

一.Comparator的使用

1.Arrays.sort

        给基本类型的数组进行排序的方法,默认是实现升序,也可以通过方法写匿名类自定义实现升降序排序。

代码:

Arrays.sort(arr,new Comparator(){
    @Override
	public int compare(Integer o1, Integer o2) {
			if(o1

2.Collections.sort

        给List类的可变长数组进行排序的方法,默认是实现升序,也可以通过方法覆写Comparator接口的compara自定义实现升降序排序。

代码:

 Collections.sort(st,new Comparator() {
		public int compare(Integer o1, Integer o2) {
			if(o1

二、Comparable的使用

        用于自定义类继承该接口,该类的实例即可放入TreeSet中实现自定义排序。

代码:

//main方法
import rpg.Margicion;
import java.util.HashSet;
import java.util.TreeSet;

public class Main {

    public static void main(String[] args)  {
		HashSet s=new HashSet<>();
		Margicion r=new Margicion("b", 15, 20);
		Margicion d=new Margicion("a", 15, 20);
		
		TreeSet 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 {
    //类的相关初始化
    @Override
    public void showfight(){
        System.out.println("挥剑攻击");
        System.out.println(super.blood);
        System.out.println(blood);
    }
    
    @Override
    public String toString() {
        return "Margicion [blood=" + name + "]";
    }
    
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + blood;
        return result;
    }

    @Override
    public 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,具体的操作可以自己实验
    @Override
    public int compareTo(Margicion o) {
        if(name.compareTo(o.name)==-1){
            return 1;
        }else {
            return -1;
        }
    }

}

你可能感兴趣的:(Java学习,java,学习,开发语言)