关于java的排序规则写法
2010-12-23 11:19
323 查看
关于java排序
这里给出了两个示例
对于复杂对象或者问题,核心其实就是定义一个比较器
本菜对java还不是很熟练,定义和使用比较器的方法比较笨
这里有一个关于比较器的文章,写的还不错 http://wenku.baidu.com/view/b8bca58371fe910ef12df8d0.html
JAVA CODE
:No Title Code
import java.io.*;
import java.util.*;
import java.math.*;
import java.text.*;
import java.util.Comparator;
//关于java排序
//这里给出了两个示例
//对于复杂对象或者问题,核心其实就是定义一个比较器
//这里有一个关于比较器的文章,写的还不错
//http://wenku.baidu.com/view/b8bca58371fe910ef12df8d0.html
public class Main{
final static int maxn=100;
public static class student{
String name;
int score;
student(){};
student(String nn,int ss){
name=nn;
score=ss;
}
String getname(){
return name;
}
int getscore(){
return score;
}
void output(){
System.out.println(name+" "+score);
}
};
public static class MyComparator implements Comparator{
public int compare(Object obj1, Object obj2) {
student x=(student)obj1;
student y=(student)obj2;
if(x.getscore()!=y.getscore())
return x.getscore()<y.getscore()?1:-1;
return x.getname().compareTo(y.getname())>0?1:-1;
}
};
public static student p[]=new student[maxn];
public static Integer a[]=new Integer[maxn];
public static void main(String args[]){
Scanner in=new Scanner(System.in);
///排序1:数组排序
//示例数据
//5
//4 1 3 6 9
int n=in.nextInt();
for(int i=0;i<n;i++)a[i]=in.nextInt();
//第1个参数传入的是数组的首地址例如a
//接下来传入的是排序的范围 x,y,表示将区间a[x]到a[y-1]段排序
//默认是从小到大排
Arrays.sort(a,0,n);
for(int i=0;i<n;i++)System.out.print(a[i]+" ");
System.out.println();
//这是构造方法类实现排序准则的形式
Arrays.sort(a,0,n,new Comparator<Integer>(){
public int compare(Integer x,Integer y){
return x<y?1:-1;//表示从大到小
}
});
for(int i=0;i<n;i++)System.out.print(a[i]+" ");
System.out.println();
//排序2:类排序
//示例数据
//5
//xiaoming 100
//dong 100
//haha 75
//hehe 80
//xiaowang 90
int m=in.nextInt();
for(int i=0;i<m;i++){
String name=in.next();
int score=in.nextInt();
p[i]=new student(name,score);
}
//示例:首先按成绩从高到底,若相同,按名字字典序
Arrays.sort(p,0,m,new Comparator<student>(){
public int compare(student x,student y){
if(x.getscore()!=y.getscore())
return x.getscore()<y.getscore()?1:-1;
return x.getname().compareTo(y.getname())>0?1:-1;
}
});
//这是外部定义比较器类的使用方法
Arrays.sort(p,0,m,new MyComparator());
for(int i=0;i<m;i++)p[i].output();
}
}
这里给出了两个示例
对于复杂对象或者问题,核心其实就是定义一个比较器
本菜对java还不是很熟练,定义和使用比较器的方法比较笨
这里有一个关于比较器的文章,写的还不错 http://wenku.baidu.com/view/b8bca58371fe910ef12df8d0.html
JAVA CODE
:No Title Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | import java.io.*; import java.util.*; import java.math.*; import java.text.*; import java.util.Comparator; public class Main{ final static int maxn=100; public static class student{ String name; int score; student(){}; student(String nn,int ss){ name=nn; score=ss; } String getname(){ return name; } int getscore(){ return score; } void output(){ System.out.println(name+" "+score); } }; public static class MyComparator implements Comparator{ public int compare(Object obj1, Object obj2) { student x=(student)obj1; student y=(student)obj2; if(x.getscore()!=y.getscore()) return x.getscore()<y.getscore()?1:-1; return x.getname().compareTo(y.getname())>0?1:-1; } }; public static student p[]=new student[maxn]; public static Integer a[]=new Integer[maxn]; public static void main(String args[]){ Scanner in=new Scanner(System.in); ///排序1:数组排序 //示例数据 //5 //4 1 3 6 9 int n=in.nextInt(); for(int i=0;i<n;i++)a[i]=in.nextInt(); //第1个参数传入的是数组的首地址例如a //接下来传入的是排序的范围 x,y,表示将区间a[x]到a[y-1]段排序 //默认是从小到大排 Arrays.sort(a,0,n); for(int i=0;i<n;i++)System.out.print(a[i]+" "); System.out.println(); //这是构造方法类实现排序准则的形式 Arrays.sort(a,0,n,new Comparator<Integer>(){ public int compare(Integer x,Integer y){ return x<y?1:-1;//表示从大到小 } }); for(int i=0;i<n;i++)System.out.print(a[i]+" "); System.out.println(); //排序2:类排序 //示例数据 //5 //xiaoming 100 //dong 100 //haha 75 //hehe 80 //xiaowang 90 int m=in.nextInt(); for(int i=0;i<m;i++){ String name=in.next(); int score=in.nextInt(); p[i]=new student(name,score); } //示例:首先按成绩从高到底,若相同,按名字字典序 Arrays.sort(p,0,m,new Comparator<student>(){ public int compare(student x,student y){ if(x.getscore()!=y.getscore()) return x.getscore()<y.getscore()?1:-1; return x.getname().compareTo(y.getname())>0?1:-1; } }); //这是外部定义比较器类的使用方法 Arrays.sort(p,0,m,new MyComparator()); for(int i=0;i<m;i++)p[i].output(); } } |
import java.util.*;
import java.math.*;
import java.text.*;
import java.util.Comparator;
//关于java排序
//这里给出了两个示例
//对于复杂对象或者问题,核心其实就是定义一个比较器
//这里有一个关于比较器的文章,写的还不错
//http://wenku.baidu.com/view/b8bca58371fe910ef12df8d0.html
public class Main{
final static int maxn=100;
public static class student{
String name;
int score;
student(){};
student(String nn,int ss){
name=nn;
score=ss;
}
String getname(){
return name;
}
int getscore(){
return score;
}
void output(){
System.out.println(name+" "+score);
}
};
public static class MyComparator implements Comparator{
public int compare(Object obj1, Object obj2) {
student x=(student)obj1;
student y=(student)obj2;
if(x.getscore()!=y.getscore())
return x.getscore()<y.getscore()?1:-1;
return x.getname().compareTo(y.getname())>0?1:-1;
}
};
public static student p[]=new student[maxn];
public static Integer a[]=new Integer[maxn];
public static void main(String args[]){
Scanner in=new Scanner(System.in);
///排序1:数组排序
//示例数据
//5
//4 1 3 6 9
int n=in.nextInt();
for(int i=0;i<n;i++)a[i]=in.nextInt();
//第1个参数传入的是数组的首地址例如a
//接下来传入的是排序的范围 x,y,表示将区间a[x]到a[y-1]段排序
//默认是从小到大排
Arrays.sort(a,0,n);
for(int i=0;i<n;i++)System.out.print(a[i]+" ");
System.out.println();
//这是构造方法类实现排序准则的形式
Arrays.sort(a,0,n,new Comparator<Integer>(){
public int compare(Integer x,Integer y){
return x<y?1:-1;//表示从大到小
}
});
for(int i=0;i<n;i++)System.out.print(a[i]+" ");
System.out.println();
//排序2:类排序
//示例数据
//5
//xiaoming 100
//dong 100
//haha 75
//hehe 80
//xiaowang 90
int m=in.nextInt();
for(int i=0;i<m;i++){
String name=in.next();
int score=in.nextInt();
p[i]=new student(name,score);
}
//示例:首先按成绩从高到底,若相同,按名字字典序
Arrays.sort(p,0,m,new Comparator<student>(){
public int compare(student x,student y){
if(x.getscore()!=y.getscore())
return x.getscore()<y.getscore()?1:-1;
return x.getname().compareTo(y.getname())>0?1:-1;
}
});
//这是外部定义比较器类的使用方法
Arrays.sort(p,0,m,new MyComparator());
for(int i=0;i<m;i++)p[i].output();
}
}
相关文章推荐
- Java 关于对象之间的比较 , 容器中的数据的排序
- <java> <JTable> 关于设置JTable导入数据后自动排序-小记
- 吐槽文:关于java命名规则
- Java 关于List 的排序
- java面试中关于学员一些sql语句的写法
- 关于java map 初始化,遍历,排序的几个解答
- 关于java集合排序
- Java关于List<String> 进行排序,重写Comparator()方法
- 关于不规则列的排序问题
- 在Java中,关于对自定义类的对象排序问题
- [转]关于Java对中文排序的问题
- Java关于排序的介绍2-归并排序
- java基础关于java排序(一)
- [转]关于MSSQLServer的排序规则
- 关于mysql中字符集和排序规则说明
- 关于冒泡排序的C和JAVA的写法
- 关于java中的List集合的排序问题/Collections.sort()的使用(转)
- 关于JAVA的排序函数的比较——comparator,comparatable
- 关于如何实现接口IComparer以实现自己需要的排序规则
- 关于如何在java中实现中文首字母索引排序的问题 2016-08-25 15:14 86人阅读 评论(0) 收藏 举报 分类: Java(19) 版权声明:本文为博主原创文章,未经博主允许不得转载