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; //这里返回值修改一下就好了
}
抽象方法:(可以理解为重新定义了排序方法)