Java中类似于sort的函数
前言:
这学期刚开始学Java的时候就和C、C++相对比着学习,本来早就应该掌握这个的,但是一直给忘了,今天突然想起来,于是就在JDK API中找了找
JDK API中相关介绍:
在JDK中的lang包中有Comparable和Comparator这两个接口,作用都是差不多,只是稍有区别,主要我是学了Comparator中的compare()方法
JDK API中这样介绍:
实现方法
1.如果只要实现升序的话,在JDK中是默认方法可以实现升序功能的
2.如果要实现降序,当然得对接口的方法进行重写
具体可见代码:
其中直接用的数组进行测试,没用用其他的集合类
import java.util.*;
/**
* 自定义集合(类似于结构体)
* @author 28649
*
*/
class Num{
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
/**
* 自定义排序方式(即:对自定义集合进行排序)
* @author 28649
*
*/
class Cmp implements Comparator<Num>{
public int compare(Num a,Num b) {
if(a.getX()<b.getX()) {
return 1;
}
else if(a.getX()>b.getX()){
return -1;
}
else {
return 0;
}
}
}
/**
* 简单的对数组进行升序
* @author 28649
*
*/
/*public class SortTest{
public static void main(String args[]) {
System.out.println();
System.out.println("排序后(从小到大),能直接通过默认实现方式实现:");
Arrays.sort(a);
for(int i=0;i<10;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
}
*/
/**
* 对数组进行降序排序,稍微复杂些
* @author 28649
*
*/
public class SortTest{
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
Num a[]=new Num[10];
for(int i=0;i<10;i++) {
System.out.print("请输入一个整数:");
a[i]=new Num();
int num=scan.nextInt();
a[i].setX(num);
}
System.out.println("排序前:");
for(int i=0;i<10;i++) {
System.out.print(a[i].getX()+" ");
}
System.out.println();
System.out.println("排序后(从大到小),需要自己定义实现方式:");
Arrays.sort(a,0,10,new Cmp());
for(int i=0;i<10;i++) {
System.out.print(a[i].getX()+" ");
}
}
}
至于对结构体什么的排序,也是类似的,这里也还是贴一份代码:
结构体在Java中也是用类实现,主要存了两个数x,y;下面代码实现对该结构体按照x的降序进行排序
import java.util.*;
/**
* 自定义集合(类似于结构体)
* @author 28649
*
*/
class Num{
private int x;
private int y;
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
/**
* 自定义排序方式(即:对自定义集合进行排序)
* @author 28649
*
*/
class Cmp implements Comparator<Num>{
public int compare(Num a,Num b) {
if(a.getX()<b.getX()) {
return 1;
}
else if(a.getX()>b.getX()){
return -1;
}
else {
return 0;
}
}
}
/**
* 简单的对数组进行升序
* @author 28649
*
*/
/*public class SortTest{
public static void main(String args[]) {
System.out.println();
System.out.println("排序后(从小到大),能直接通过默认实现方式实现:");
Arrays.sort(a);
for(int i=0;i<10;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
}
*/
/**
* 对数组进行降序排序,稍微复杂些
* @author 28649
*
*/
public class SortTest{
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
Num a[]=new Num[10];
for(int i=0;i<10;i++) {
System.out.print("请输入整数x,整数y:");
a[i]=new Num();
int num1=scan.nextInt();
int num2=scan.nextInt();
a[i].setX(num1);
a[i].setY(num2);
}
System.out.println("排序前:");
for(int i=0;i<10;i++) {
System.out.println(a[i].getX()+" "+a[i].getY());
}
System.out.println();
System.out.println("排序后(从大到小),需要自己定义实现方式:");
Arrays.sort(a,0,10,new Cmp());
for(int i=0;i<10;i++) {
System.out.println(a[i].getX()+" "+a[i].getY());
}
}
}