java 数据结构中的枚举:enum使用
枚举:列出某些有穷序列集合的所有成员
这些成员的结构就是枚举的结构,可以在枚举中单独调用,枚举类型的对象只能是枚举集合中的值。
如果我们自定义枚举的属性,那么我们需要定义枚举的构造函数,包含枚举的所有用到属性,当编译的时候,会根据枚举成员一次次的调用构造函数。
枚举的成成员是有序的,我们可以根据成员名称来获取成员,也可以根据序列号获取成员,或者自定义获取规则实现。
枚举不能使用new创建
接下来我们自定义属性来实现枚举:
package com.fg.java.data.struct;
public enum EnumDemo {
/**
* 成员定义,根据逗号隔开,且每个枚举只能有一个成员集合序列
*/
RED(1,"red",1,2,3),
green(2,"green",4,5,6),
blue(3,"blue",'7','8','9');
private Integer id;
private String colorName;
private int r;
private int g;
private int b;
private int c;
/**
* 构造函数
* @param id
* @param colorName
* @param r
* @param g
* @param b
*/
EnumDemo(Integer id, String colorName, int r, int g, int b) {
this.id = id;
this.colorName = colorName;
this.r = r;
this.g = g;
this.b = b;
}
public Integer getId() {
return id;
}
public String getColorName() {
return colorName;
}
public int getR() {
return r;
}
public int getG() {
return g;
}
public int getB() {
return b;
}
@Override
public String toString() {
return "EnumDemo{" +
"id=" + id +
", colorName='" + colorName + '\'' +
", r=" + r +
", g=" + g +
", b=" + b +
'}';
}
/**
* 自定义获取EnumDemo对象
* @param name
* @return
*/
public static EnumDemo getEnumDemo(String name){
if(name == null){
return null;
}
switch(name){
case "red": {
return RED;
}
case "green":
{
return green;
}
case "blue":
return blue;
default:
return null;
}
}
public static void main(String args []){
EnumDemo demo = EnumDemo.RED;
System.out.println(demo.toString());
System.out.println("输出所有枚举");
for(EnumDemo enumDemo :EnumDemo.values()){
System.out.println(enumDemo.toString());
}
System.out.println("根据名称输出枚举");
System.out.println(EnumDemo.valueOf("RED"));
System.out.println("自定义获取枚举值的方法:");
System.out.println(EnumDemo.getEnumDemo("red").toString());
System.out.println("获取当前序列号:");
System.out.println(demo.ordinal());
System.out.println();
}
}