java 对象数组排序
废话不多说直接奉上代码先:
importjava.util.*;
importjava.io.*;
publicclassMain{
staticint[]dp=newint[1010];
publicstaticvoidmain(String[]args)throwsIOException{
Mouse[]mice=newMouse[1010];
FileReaderfr=newFileReader("in.txt");//读取文件
BufferedReaderread=newBufferedReader(fr);
Stringstr="";
intn=1;
while((str=read.readLine())!=null){
String[]s=str.split("");
mice[n]=newMouse();//对象实例化,很重要
mice[n].weight=Integer.parseInt(s[0]);
mice[n].speed=Integer.parseInt(s[1]);
n++;
}
System.out.println(n);
Arrays.sort(mice,1,n);//sort(intstart,intend)包括start索引,不包括end索引
for(inti=1;i<n;i++){
System.out.println(mice[i].weight+""+mice[i].speed);
}
}
}
classMouseimplementsComparable{//实现Comparable接口
intweight;
intspeed;
publicintcompareTo(Objecto){//重写compareTo方法
Mousem=(Mouse)o;
returnweight>m.weight?1:(weight==m.weight?0:-1);
}
}
另附上Arrays.sort用法:
1.数字排序int[]intArray=newint[]{4,1,3,-23};
Arrays.sort(intArray);
输出:[-23,1,3,4]
2.字符串排序,先大写后小写String[]strArray=newString[]{"z","a","C"};
Arrays.sort(strArray);
输出:[C,a,z]
3.严格按字母表顺序排序,也就是忽略大小写排序Case-insensitivesort
Arrays.sort(strArray,String.CASE_INSENSITIVE_ORDER);
输出:[a,C,z]
4.反向排序,Reverse-ordersort
Arrays.sort(strArray,Collections.reverseOrder());
输出:[z,a,C]
5.忽略大小写反向排序Case-insensitivereverse-ordersort
Arrays.sort(strArray,String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(strArray));
输出:[z,C,a]
6、对象数组排序
要对一个对象数组排序,则要自己实现java.util.Comparator接口
例子:
Common_User[]userListTemp=newCommon_User[temp.size()];
Arrays.sort(userListTemp,newPinyinComparator());
PinyinComparator实现了Comparator接口,重写了compare方法,来告诉Arrays按照什么规则来比较两个对象的大小。
以上所述就是本文的全部内容了,希望大家能够喜欢。