这是排序的方法,但默认是对int排序,我想对double排序,该怎么修改?谢谢高手来指导!!因为Comparator的compare方法返回的是int的,所以不知道怎么改,是不是重写个Comparator的接口?我是个菜鸟,请各位高手指导下,感谢
public class Compare implements Comparator<Term> {
@Override
public int compare(Term o1, Term o2) {
if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
return -1;
if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
return 0;
if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
return 1;
return 0;
}
}
public class Compare implements Comparator<Term> {
@Override
public int compare(Term o1, Term o2) {
if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
return -1;
if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
return 0;
if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
return 1;
return 0;
}
}
public class Term { private double term;
public Term(double term){
this.term=term;
}
public double getTerm() {
return term;
}
public void setTerm(double term) {
this.term = term;
}
}import java.util.Arrays;
import java.util.Comparator;
public class TermSort{
public static void main(String[] args){
Term[] array = new Term[5];
array[0] = new Term(1.56);
array[1] = new Term(2.51);
array[2] = new Term(8.56);
array[3] = new Term(2.56);
array[4] = new Term(5.23);
Arrays.sort(array,new Comparator<Term>(){
@Override
public int compare(Term o1, Term o2) {
double t1=o1.getTerm();
double t2=o2.getTerm();
return t1>t2?1:(t1<t2)?-1:1;
}
});
for(Term t:array){
System.out.println(t.getTerm());
}
}}
我的问题是把处理好的数据先放到array数组里,然后排序,而不是直接给好的数据,该怎么改?
呵呵,不好意思,我是菜鸟,问的问题不好,别介意啊
Arrays.sort(dArray);// 排序。
System.out.println(Arrays.toString(dArray));
谢谢你啊
static void sort(float[] a)
我重写Comparator接口把int改成double,然后重写了Compare方法,但是Collections.sort出错,这是为什么啊?
public interface Comparator<T>{
public double compare(T o1,T o2);
boolean equals(Object obj);
}public class Compare implements Comparator<Term> {
@Override
public double compare(Term o1, Term o2) {
if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
return -1;
if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
return 0;
if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
return 1;
return 0;
}
}
@Override
public double compare(Term o1, Term o2) {
if(((Double)o1.getZDX()).doubleValue() > ((Double)o2.getZDX()).doubleValue())
return -1;
if(((Double)o1.getZDX()).doubleValue()==((Double)o2.getZDX()).doubleValue())
return 0;
if(((Double)o1.getZDX()).doubleValue() < ((Double)o2.getZDX()).doubleValue())
return 1;
return 0;
}
}参数用object
对象里面再强转
出现这个错误,为什么啊?
如果是这样的话,只能对java自带的类型使用Arrays.sort方法进行排序,因为哪些类通常都实现了排序接口,可如果是我们自定义的类型的,这个就要我们自己去实现排序接口了,其实就是返回1,0,-1而已
@Override
public double compare(Term o1, Term o2) {
return java.lang.Double.compare(o1.getTerm(), o2.getTerm());
}
}
public int compareTo(Rain o) {
if(this.getRnum() > o.getRnum()){
return -1;
}
else if(this.getRnum() < o.getRnum()){
return 1;
}
else{
return 0;
}
}
List<Double> doubles = new ArrayList<Double>() ;
for (int i = 1; i < 100; i++)
doubles.add(i/7d) ;
Collections.sort(doubles,new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
// TODO Auto-generated method stub
int i = 0 ;
double d = o2 -o1 ;
if(d>0)
i = 1 ;
if(d<0)
i = -1 ;
return i;
}
}) ;
for (Double double1 : doubles) {
System.out.println(double1);
}