包java.dataStructure中,文件名Enum_demo.java
在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型
在申明枚举类的时候,也可以申明属性、方法和构造函数,但枚举类的构造函数必须为私有的,不然就能new出枚举类
取出一个枚举内容
//================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED,GREEN,BLUE; } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Color c = Color.BLUE; System.out.println(c); } }
枚举类型的数据也可以使用“枚举.values()”的形式,将全部的枚举类型变为对喜爱数组的形式,之后再直接使用foreach进行输出
//================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED,GREEN,BLUE; } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(Color c:Color.values()){ System.out.println(c); } } }
使用switch进行判断
//================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED,GREEN,BLUE; } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(Color c:Color.values()){ print(c); } } public static void print(Color color){ switch(color){ case RED:{ System.out.println("红色"); break; } case GREEN:{ System.out.println("绿色"); break; } case BLUE:{ System.out.println("蓝色"); break; } default:{ System.out.println("其他颜色"); break; } } } }
使用name()和ordinal()方法取得名称和编号
//================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED,GREEN,BLUE; } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(Color c:Color.values()){ System.out.println(c.ordinal()+"-->"+c.name()); } } }
通过构造方法为属性赋值
通过把构造方法私有,使得不能new 一个新的Color对象,只能使用RED("红色"),GREEN("绿色"),BLUE("蓝色")三个类型
//================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED("红色"),GREEN("绿色"),BLUE("蓝色"); //定义枚举的3个类型,“红色”对应String name private Color(String name){ //定义私有构造方法 this.setName(name); } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(Color c:Color.values()){ System.out.println(c.ordinal()+"-->"+c.name()+c.getName()); } } }
通过setter()方法为属性赋值
枚举比较器
import java.util.Iterator; import java.util.Set; import java.util.TreeSet; //================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum Color{ RED("红色"),GREEN("绿色"),BLUE("蓝色"); //定义枚举的3个类型 private Color(String name){ //定义构造方法 this.setName(name); } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } //主类 //Function : Enum_demo; public class Enum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Set<Color> t = new TreeSet<Color>(); t.add(Color.BLUE); t.add(Color.GREEN); t.add(Color.RED); Iterator<Color> iter = t.iterator(); while(iter.hasNext()){ System.out.println(iter.next()+"、"); } } }
EnumMap
EnumMap是Map接口的子类,所以本身还是以Map的形式进行操作,即Key--Value,
如果要使用EnumMap,则首先要创建EnumMap的对象,在创建对象的时候必须指定要操作的枚举类型
import java.util.EnumMap; import java.util.Map; //================================================= // File Name : Enum_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : Enum_demo; public class EnumMap_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<Color,String> desc = null; //定义一个Map对象 desc = new EnumMap<Color,String>(Color.class); //实例化EnumMap desc.put(Color.BLUE, "蓝色"); desc.put(Color.RED, "红色"); desc.put(Color.GREEN,"绿色"); for(Color c:Color.values()){ //取得全部的枚举 System.out.println(c.name()+"-->"+c.getName()); } for(Color c:desc.keySet()){ //取得全部的Key System.out.println(c.name()+"、"); } for(String c:desc.values()){ //取得全部的值 System.out.println(c+"、"); } } }
EnumSet
EnumSet是Set接口的子类,所以里面的内容是无法重复的。
使用EnumSet时不能直接使用关键字new为其进行实例化,所以在此类中提供了很多的静态方法
EnumSet---将全部的集合设置到EnumSet集合中
import java.util.EnumSet; //================================================= // File Name : EnumSet_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color_{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : EnumSet_demo; public class EnumSet_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 EnumSet<Color> es = null; //声明一个EnumSet对象 es = EnumSet.allOf(Color.class); //将枚举的全部类型设置到EnumSet对象中 print(es); } public static void print(EnumSet<Color> temp){ //专门的输出操作 for(Color c:temp){ //循环输出EnumSet中的内容 System.out.println(c+"、"); } } }
只设置一个枚举的类型到集合中
使用EnumSet提供的static方法of(),将一个枚举中的一个内容设置到EnumSet集合中
import java.util.EnumSet; //================================================= // File Name : EnumSet_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color_{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : EnumSet_demo; public class EnumSet_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 EnumSet<Color> es = null; //声明一个EnumSet对象 es = EnumSet.of(Color.BLUE); //设置一个枚举的内容 print(es); } public static void print(EnumSet<Color> temp){ //专门的输出操作 for(Color c:temp){ //循环输出EnumSet中的内容 System.out.println(c+"、"); } } }
创建只能放入指定枚举类型的集合
使用EnumSet提供的static方法noneOf(),将集合设置成只能增加Color类型的集合,但是并不设置任何的内容到集合中
import java.util.EnumSet; //================================================= // File Name : EnumSet_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color_{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : EnumSet_demo; public class EnumSet_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 EnumSet<Color> es = null; //声明一个EnumSet对象 es = EnumSet.noneOf(Color.class); //创建一个可以加入Color类型的对象 es.add(Color.BLUE); es.add(Color.RED); print(es); } public static void print(EnumSet<Color> temp){ //专门的输出操作 for(Color c:temp){ //循环输出EnumSet中的内容 System.out.println(c+"、"); } } }
创建不包含指定元素的集合
import java.util.EnumSet; //================================================= // File Name : EnumSet_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color_{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : EnumSet_demo; public class EnumSet_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 EnumSet<Color> esOld = null; //声明一个EnumSet对象 EnumSet<Color> esNew = null; //声明一个EnumSet对象 esOld = EnumSet.noneOf(Color.class); //创建一个可以加入Color类型的对象 esOld.add(Color.BLUE); esOld.add(Color.RED); esNew = EnumSet.complementOf(esOld); //创建一个不包含指定元素的集合 print(esNew); } public static void print(EnumSet<Color> temp){ //专门的输出操作 for(Color c:temp){ //循环输出EnumSet中的内容 System.out.println(c+"、"); } } }
复制已有的内容
import java.util.EnumSet; //================================================= // File Name : EnumSet_demo //------------------------------------------------------------------------------ // Author : Common // 枚举类名:Color // 属性: // 方法: enum color_{ RED,GREEN,BLUE; //定义枚举的3个类型 } //主类 //Function : EnumSet_demo; public class EnumSet_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 EnumSet<Color> esOld = null; //声明一个EnumSet对象 EnumSet<Color> esNew = null; //声明一个EnumSet对象 esOld = EnumSet.noneOf(Color.class); //创建一个可以加入Color类型的对象 esOld.add(Color.BLUE); esOld.add(Color.RED); esNew = EnumSet.copyOf(esOld); //从已有的集合中复制出内容 print(esNew); } public static void print(EnumSet<Color> temp){ //专门的输出操作 for(Color c:temp){ //循环输出EnumSet中的内容 System.out.println(c+"、"); } } }
让枚举类实现一个接口
在接口中定义了一个getColor()方法,枚举类在实现此接口之后,就必须对枚举类中的每个对象分别实现接口中的getColor()方法
//================================================= // File Name : InterfaceEnum_demo //------------------------------------------------------------------------------ // Author : Common // 接口名:Print // 属性: // 方法: interface Print_{ //定义Print方法 public String getColor(); //定义抽象方法 } //枚举类名:Color //属性: //方法: enum color_1 implements Print_{ //枚举类实现接口 RED{ //枚举对象实现抽象方法 @Override public String getColor() { // TODO 自动生成的方法存根 return "红色"; } }, BLUE{ @Override public String getColor() { // TODO 自动生成的方法存根 return "蓝色"; } }, GREEN{ @Override public String getColor() { // TODO 自动生成的方法存根 return "绿色"; } }; } //主类 //Function : InterfaceEnum_demo; public class InterfaceEnum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(color_1 c:color_1.values()){ //循环输出EnumSet中的内容 System.out.println(c.getColor()+"、"); } } }
在枚举类中定义抽象方法
//================================================= // File Name : InterfaceEnum_demo //------------------------------------------------------------------------------ // Author : Common // 接口名:Print // 属性: // 方法: interface Print_{ //定义Print方法 public String getColor(); //定义抽象方法 } //枚举类名:Color //属性: //方法: //enum color_1 implements Print_{ //枚举类实现接口 // RED{ //枚举对象实现抽象方法 // @Override // public String getColor() { // // TODO 自动生成的方法存根 // return "红色"; // } // }, // BLUE{ // @Override // public String getColor() { // // TODO 自动生成的方法存根 // return "蓝色"; // } // }, // GREEN{ // @Override // public String getColor() { // // TODO 自动生成的方法存根 // return "绿色"; // } // }; //} enum color_1{ //枚举类实现接口 RED{ //枚举对象实现抽象方法 @Override public String getColor() { // TODO 自动生成的方法存根 return "红色"; } }, BLUE{ @Override public String getColor() { // TODO 自动生成的方法存根 return "蓝色"; } }, GREEN{ @Override public String getColor() { // TODO 自动生成的方法存根 return "绿色"; } }; public abstract String getColor(); //定义抽象方法 } //主类 //Function : InterfaceEnum_demo; public class InterfaceEnum_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 for(color_1 c:color_1.values()){ //循环输出EnumSet中的内容 System.out.println(c.getColor()+"、"); } } }