Java比较器
java比较器是依据Comparable接口 ,大家可以看一下它的源码就是一个comparaTo()
方法,而且并没有做什么!
下面我就简单实现一下它
package com.day1;
import java.util.Arrays;
/*1.
*
*/
public class day1 implements Comparable {
int radius;
String name;
public day1(String name,int radius) {
this.name=name;
this.radius = radius;
}
@Override
public String toString() {
return "day1{" +
"radius=" + radius +
", name='" + name + '\'' +
'}';
}
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public static void main(String[] args) {
day1[] a = new day1[4];
a[0] = new day1("a",1);
a[1] = new day1("b",4);
a[2] = new day1("c",2);
a[3] = new day1("d",9);
day1 x = new day1("a",4);
day1 x1 = new day1("a",5);
String []y =new String[]{"AA","CC","BB"};
Arrays.sort(y);
System.out.println(Arrays.toString(y));
System.out.println(x.compareTo(x1));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
@Override
public int compareTo(Object o) {
System.out.println("******");
if (o instanceof day1) {
day1 day = (day1) o;
if (radius > day.radius) {
return -1;
} else if (radius < day.radius) {
return 1;
} else {
return -this.name.compareTo(day.name);
}
} else {
throw new RuntimeException("输入的类型不一样");
}
}
}
class m{
public static void main(String[] args) {
day1[] a = new day1[4];
a[0] = new day1("a",1);
a[1] = new day1("b",4);
a[2] = new day1("c",2);
a[3] = new day1("d",9);
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
枚举类
类的对象有限个且确定
当定义一组常量是强烈建议使用枚举类
1.先自定义枚举类
/*
* 1.自定义枚举类
*/
public class Enum {
//1.属性用private final修饰
private final String SeasonName;
private final String SeasonDsc;
//构造器用private修饰
private Enum(String SeasonName,String SeasonDsc){
this.SeasonDsc=SeasonDsc;
this.SeasonName=SeasonName;
}
//对象用public static final 修饰
public static final Enum SPRING = new Enum("春天","春暖花开");
public static final Enum SUMMER = new Enum("夏天","夏日炎炎");
public static final Enum AUTUMN = new Enum("秋天","秋风送爽");
public static final Enum WINTER = new Enum("冬天","冰天雪地");
@Override
public String toString() {
return "Enum{" +
"SeasonName='" + SeasonName + '\'' +
", SeasonDsc='" + SeasonDsc + '\'' +
'}';
}
public String getSeasonName() {
return SeasonName;
}
}
class EnumTest{
public static void main(String[] args) {
Enum spring = Enum.SPRING;
System.out.println(spring);
}
}
2.使用enum关键字以及Enum类的方法
使用enum关键字的类默认继承Enum类
public class Enum1 {
public static void main(String[] args) {
Enum2 summer = Enum2.SUMMER;
//1.toString方法
System.out.println(summer);
//2.values()方法
Enum2[] values = Enum2.values();
for (Enum2 s:values) {
System.out.println(s);
}
//3.valueof()方法,根据枚举类的对象名返回相应的对象
System.out.println(Enum2.valueOf("WINTER"));
}
}
interface info{
void show();
}
//定义的枚举类,默认继承与Java.lang.Enum类
enum Enum2 implements info{
//对象初始化必须在类的顶部
SPRING("春天","春暖花开"){
@Override
public void show() { //对于不同的对象有不同的继承方法
System.out.println("");
}
}, //改为逗号
SUMMER("夏天","夏日炎炎"){
@Override
public void show() {
}
},
AUTUMN("秋天","秋风送爽"){
@Override
public void show() {
}
},
WINTER("冬天","冰天雪地"){
@Override
public void show() {
}
}; //最后一个为分号
//属性用private final修饰
private final String SeasonName;
private final String SeasonDsc;
//构造器用private修饰
private Enum2(String SeasonName,String SeasonDsc){
this.SeasonDsc=SeasonDsc;
this.SeasonName=SeasonName;
}
//toString方法不需要在重写了,会返回枚举类中的对象名!
// @Override
// public String toString() {
// return "Enum{" +
// "SeasonName='" + SeasonName + '\'' +
// ", SeasonDsc='" + SeasonDsc + '\'' +
// '}';
// }
public String getSeasonName() {
return SeasonName;
}
}
大家注意一下他们之间的关系