Java:写二维数组排序思考

 1.implements关键字

定义:实现接口中定义的抽象方法             (看不懂没事我也看不懂)

作用:

1.实现接口中定义的所有抽象方法

2.可以同时继承多个接口,接口跟接口之间采用逗号分隔,

(仅代表作者目前理解;以后会做修改)

 2.Comparable接口

Comparable是排序接口;如果使用此接口就意味着 “此类支持排序”。可以使用Arrays.sort()对改类进行排序

题目 

1490 - 坐标排序

题目描述

输入 nn 个不同的坐标,按 xx 轴的值从小到大排序,如果 xx 相同,则按照 yy 排序。

输入

第 11 行是一个整数 nn( n≤10000n≤10000 )。

接下来有 nn 行,每行有 22 个整数,代表了 11 个点的坐标。

输出

输出 nn 行,每行有 22 个整数,输出排序后的 nn 个坐标。

代码

import java.util.*;
import java.math.*;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);		 
		        int a = cin.nextInt();
		        shuju[] zaiti = new shuju[a];
		        for (int i = 0; i < a; i++) {
		        	zaiti[i] = new shuju(cin.nextInt(), cin.nextInt());
		        }
		        Arrays.sort(zaiti);		 
		        for (int i = 0; i < a; i++) {
		            System.out.println(zaiti[i].x + " " + zaiti[i].y);
		        }
		    }		 
		}
class shuju implements Comparable <shuju>{ 
	int x, y;
	shuju(){}
	public shuju(int x,int y) {
		this.x=x;
		this.y=y;
	}
	@Override
	public int compareTo(shuju o) {
		// TODO 自动生成的方法存根
		return 0;
	}
		}

只生成继承的抽象方法;没有给方法定义

 如果这样写的话就只给x进行排序,没有考虑x相同y不同的情况

修正 

import java.util.*;
import java.math.*;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);		 
		        int a = cin.nextInt();
		        shuju[] zaiti = new shuju[a];
		        for (int x = 0; x < a; x++) {
		        	zaiti[x] = new shuju(cin.nextInt(), cin.nextInt());
		        }
		        Arrays.sort(zaiti);		 
		        for (int x = 0; x < a; x++) {
		            System.out.println(zaiti[x].x + " " + zaiti[x].y);
		        }
		    }		 
		}
class shuju implements Comparable <shuju>{ 
	int x, y;
	shuju(){}
	public shuju(int x,int y) {
		this.x=x;
		this.y=y;
	}
	@Override
	public int compareTo(shuju xypaixu) {
		if (this.x > xypaixu.x) {
            return 1;
        } else if (this.x < xypaixu.x) {
            return -1;
        } else if (this.y > xypaixu.y) {
            return 1;
        } else if (this.y < xypaixu.y) {
            return -1;
        }
        return 0;
    }
		}

如果排序要从大到小就:

if (this.x > xypaixu.x) {
            return -1;   //这里返回值修改一下就好了
        }

抽象方法:(可以理解为重新定义了排序方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值