包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()+"、");
}
} }

枚举类型Enum的更多相关文章

  1. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  2. C# 中的枚举类型 enum (属于值类型)

    原文 C# 中的枚举类型 enum (属于值类型) C# 支持两种特殊的值类型:枚举和结构. 声明枚举:声明时要声明所有可能的值. using System; using System.Collect ...

  3. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  4. 枚举类型enum详解——C语言

    enum enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶 ...

  5. 深入理解Java枚举类型(enum)

    https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...

  6. 人生苦短之Python枚举类型enum

    枚举类型enum是比较重要的一个数据类型,它是一种数据类型而不是数据结构,我们通常将一组常用的常数声明成枚举类型方便后续的使用.当一个变量有几种可能的取值的时候,我们将它定义为枚举类型.在Python ...

  7. 全面解读Java中的枚举类型enum的使用

    这篇文章主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下 关于枚举 大多数地方写的枚举都是给一个枚举然后例子就开始sw ...

  8. Java基础之枚举类型Enum的使用

    Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...

  9. 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)

        新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...

  10. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

随机推荐

  1. Maven_Build_Resources

    功能:主要用于打包资源文件,默认情况下maven只打包src/main/resource下的资源,通过 1.设置build_resources 2.使用build-helper-maven-plugi ...

  2. [转]IPTABLES中SNAT和MASQUERADE的区别

    IPtables中可以灵活的做各种网络地址转换(NAT)网络地址转换主要有两种:SNAT和DNAT SNAT是source network address translation的缩写即源地址目标转换 ...

  3. 使用kuernetes提供高可用的logstash服务

    在kubernetes集群中部署logstash步骤如下: 1:logstash安装文件(目前最新版本2.3.4): 2:编写Dockerfile及执行点脚本文件run.sh,并且修改logstash ...

  4. C#-WinForm-弹窗提示框-如何知道用户点击的是哪个按钮?

    MessageBox.Show() 有21个重载 常用的弹窗提示框 1.一个参数,弹窗只有一个选项 2.三个参数,第一个参数是设置弹窗消息框中的文字内容:第二个参数是设置弹窗标题栏中显示的文本:第三个 ...

  5. 【USACO 2.1】Sorting A Three-Valued Sequence

    /* TASK: sort3 LANG: C++ URL: http://train.usaco.org/usacoprob2?a=RkPIMxsFWzm&S=sort3 SOLVE: n个数 ...

  6. 利用pre平台实现iOS应用程序自动更新

    // // AppDelegate.m // PreAutoUpdateDemo // // Created by mac on 15/12/18. // Copyright © 2015年 mac. ...

  7. Pointcut is not well-formed: expecting 'name pattern' at character position

    配置aop报错:原因是配置切点表达式的时候报错了, 星号后面没有加空格: <aop:config> <aop:pointcut id="transactionPointcu ...

  8. C++之再续前缘(一)——C++基础(与C语言的差异)(下)

    1.void型指针 void本身是一种数据类型,通常表示无值,不能声明void类型的变量,但是可以声明void类型的指针, void*类型的指针表示不确定的类型,是一种通用型的指针,也就是说任何类型的 ...

  9. css-css权威指南学习笔记3

    第三章 结构和层叠 1.确定应向一个元素应用哪些值时,用户代理不仅要考虑继承,还要考虑声明的特殊性,另外需要考虑声明本身的来源,这个过程就称为层叠.. 2.特殊性.如果一个元素有两个或多个冲突的属性声 ...

  10. 【BZOJ-2503】相框 并查集 + 分类讨论

    2503: 相框 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 71  Solved: 31[Submit][Status][Discuss] Desc ...