????????给基本类型的数组进行排序的方法,默认是实现升序,也可以通过方法写匿名类自定义实现升降序排序。
代码:
Arrays.sort(arr,new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
if(o1<o2)return 1;
else return -1;
}
});
????????给List类的可变长数组进行排序的方法,默认是实现升序,也可以通过方法覆写Comparator接口的compara自定义实现升降序排序。
代码:
Collections.sort(st,new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1<o2)return 1;
else return -1;
}
});
????????用于自定义类继承该接口,该类的实例即可放入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> {
//类的相关初始化
@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;
}
}
}