Java中类似于sort的函数

Java中类似于sort的函数

前言

这学期刚开始学Java的时候就和C、C++相对比着学习,本来早就应该掌握这个的,但是一直给忘了,今天突然想起来,于是就在JDK API中找了找

JDK API中相关介绍

在JDK中的lang包中有ComparableComparator这两个接口,作用都是差不多,只是稍有区别,主要我是学了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());
		}
	}
}

发布了127 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/boliu147258/article/details/103978017
今日推荐