枚举EnumMap,EnumSet的用法实例_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 枚举EnumMap,EnumSet的用法实例

枚举EnumMap,EnumSet的用法实例

 2013/5/19 14:13:23  zz563143188  程序员俱乐部  我要评论(0)
  • 摘要:对于我也是从新人成长而来的,深知刚毕业的新手对技术的追求和渴望。对于没有项目经验的毕业生来说,往往都会学习庞大的项目想快速提高自己。工作四五年我才明白基础才是王道,什么架构模式只有基础知识扎实了一切都迎刃而解。接下来我为大家做了一个例子,把基础中的一些高级或者偏僻的方法都用上去了,以扩大新手对基础知识的理解。目前我的总结还只是我设想的一部分(没有规范注解),后面我会慢慢的更新。声明:本例子只是实现了五分之一的功能,下面例子中涉及到的方法例子我都会一一做出来,请大家耐心等待。企业级项目实战
  • 标签:用法 Map 实例 枚举
    对于我也是从新人成长而来的,深知刚毕业的新手对技术的追求和渴望。对于没有项目经验的毕业生来说,往往都会学习庞大的项目想快速提高自己。工作四五年我才明白基础才是王道,什么架构模式只有基础知识扎实了一切都迎刃而解。
   接下来我为大家做了一个例子,把基础中的一些高级或者偏僻的方法都用上去了,以扩大新手对基础知识的理解。目前我的总结还只是我设想的一部分(没有规范注解),后面我会慢慢的更新。
   声明:本例子只是实现了五分之一的功能,下面例子中涉及到的方法例子我都会一一做出来,请大家耐心等待。

企业级项目实战(带源码)地址:http://zz563143188.iteye.com/blog/1825168

收集五年的开发资料及源码下载地址: http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6
class="java" name="code">
package com.j2se.base;

import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;

public class ContainerDemo {
    interface Cmd {
		public void act();
	}

        public class clsArr<T> {
		public <T> T[] f(T[] arg) {
			return arg;
		}
	}

	public static enum enumOpt {
		fileOpt, listOpt, setOpt, mapOpt, stackOpt, audioOpt, imageOpt, netOpt, swingOpt, concurrency
	}

	// 枚举定义方法,然后迭代
	public static enum enumMethod {
		classpath {
			String getInfo() {
				return "java的类路径:" + System.getenv("CLASSPATH");
			}
		},
		version {
			String getInfo() {
				return "目前使用的jdk版本为:" + System.getProperty("java.version");
			}
		},
		listOpt {
			public String getInfo() {
				return listOpt();
			}
		},
		setOpt { // 比haseSet操作速度快
			public String getInfo() {

				return setOpt();
			}
		},
		mapOpt {
			// EnumMap是一个特殊的map,它要求其中的key值是来自一个enum,内部可以由数组实现
			// 采用命令模式
			public String getInfo() {
				// enumOpt枚举为key,cmd接口为value并义了一个act动作
				EnumMap<enumOpt, Cmd> em = new EnumMap<enumOpt, Cmd>(
						enumOpt.class);

				em.put(enumOpt.fileOpt, new Cmd() {

					public void act() {

						audioOpt();
					}
				});

				em.put(enumOpt.imageOpt, new Cmd() {
					public void act() {
						imageOpt();
					}
				});

				em.put(enumOpt.netOpt, new Cmd() {
					public void act() {
						netOpt();
					}
				});

				// 这与代理差不多,但只是手工执行
				for (Map.Entry<enumOpt, Cmd> emItem : em.entrySet()) {
					System.out.println("/***\n正在执行:" + emItem.getKey() + " 动作");
					emItem.getValue().act(); // 调用该命令的方法
					System.out.println("执行:" + emItem.getKey() + " 完成\n***/\n");

				}
				return "执行完mapOpt枚举方法";
			}

		},

		stackOpt {
			public String getInfo() {
				return stackOpt();
			}
		},
		swingOpt {
			public String getInfo() {
				return swingOpt();
			}
		};
		// 如果是不是抽象的方法,就会是枚举默认的行为
		abstract String getInfo(); // 必须有一个同名的抽象方法,供外部函数调用
	}

	public static void excuMethod() {

		System.out.println(" 1.直接迭代枚举");
		for (enumMethod eMd : enumMethod.values()) {
			System.out.println("直接迭代枚举:" + eMd.getInfo());
		}

		System.out.println("***************************************");
		// enumSet超过enum的64个参数必要的时候会增加,类型是long,可以增删改查枚举元素
		System.out.println("2.enumset迭代枚举");

		EnumSet<enumMethod> eSet = EnumSet.noneOf(enumMethod.class); //=EnumSet.of()
		// eSet=EnumSet.allOf(enumMethod.class); //把enumMethod所有值添加进来
		eSet.add(enumMethod.classpath);
		eSet.addAll(EnumSet.of(enumMethod.version, enumMethod.setOpt));
		eSet.add(enumMethod.mapOpt);// 只能添加不重复项
		// 只有EnumSet才会range这个方法
		eSet.remove(EnumSet.range(enumMethod.classpath, enumMethod.setOpt));
		 // eSet = EnumSet.complementOf(eSet); //也就是不包含sSet已有内容,差不多求反的意思
		for (enumMethod em : eSet) {
			System.out.println("EnumSet迭代枚举: " + em.getInfo());// 调用方法
			// 根据条件只调用一个方法,或者加一些内容
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// E ? = arrayOfE[j]; localEnumSet.add(?);
		// TODO Auto-generated method stub
		// 动态代理 entrySet.toArray的用法

		// 插入,排序,各一起 并测试出时间 队列,双向队列 用一个swing界面来测试

		excuMethod();
	}

	public static String fileOpt() {
		return "执行完fileOpt方法";
	}

	public static String imageOpt() {
		return "执行完fileOpt方法";
	}

	public static String netOpt() {
		return "执行完netOpt方法";
	}

	public static String setOpt() {
		return "执行完setOpt方法";
	}

	public static String listOpt() {
		return "执行完fileOpt方法";
	}

	public static String stackOpt() {
		return "执行完stackOpt方法";
	}

	public static String audioOpt() {
		return "执行完audioOpt方法";
	}

	public static String swingOpt() {
		return "执行完swingOpt方法";
	}
}
发表评论
用户名: 匿名