博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
枚举的一些用法
阅读量:6237 次
发布时间:2019-06-22

本文共 2943 字,大约阅读时间需要 9 分钟。

枚举策略模式:

package com.price.effective.enum1;public enum Pay {	MONDAY(PayType.WEEKDAY),	SUNDAY(PayType.WEEKEND);		private PayType payType;		Pay(PayType payType){		this.payType = payType;	}		double pay(double hoursworked, double payRate){		return payType.overPay(hoursworked - 8, payRate) + payRate*8;	}		private enum PayType{		WEEKEND{			@Override			double overPay(double hours, double payRate) {				return hours * payRate * 3;			}		},				WEEKDAY{			@Override			double overPay(double hours, double payRate) {				return hours * payRate;			}					};				abstract double overPay(double hours, double payRate);	}}

枚举值域

package com.price.effective.enum1;import java.util.EnumSet;import java.util.Set;public class TestEnumSet {	// 一般的结合是List或者Set, 还有种跟好的办法如下:	public static final int STYLE_BOLD = 1 << 0;	public static final int STYLE_ITALIC = 1 << 1;	// 这样就能够使用位运算来得到一个int型表示的集合,效率较高	public void applyStyles(int styles){		if((styles & STYLE_BOLD) != 0){			System.out.println("BOLD");		}		if((styles & STYLE_ITALIC) != 0){			System.out.println("ITALIC");		}	}			// 下面用EnumSet来实现以下	public enum Style{BOLD, ITALIC};		public void applyStyles(Set
枚举作为Map的key:

package com.price.effective.enum1;import java.util.ArrayList;import java.util.Collection;import java.util.EnumMap;import java.util.List;import java.util.Map;/** * 给动物分类 * * @author cdwangzijian * */public class TestEnumMap {	public static void main(String[] args) {		// 一种方式是便利所有的动物,根据类型加入到对应的集合中		// 稍微好一点的可能可以利用类型名称数组来分类,如下:		List
[] animalByType = new List[Animal.Type.values().length]; for (int i = 0 ; i < animalByType.length; i++) { animalByType[i] = new ArrayList
(); } for (Animal a : Animal.getAnimals()) { animalByType[a.getType().ordinal()].add(a); } printResult(animalByType); Map
animalTypeMap = new EnumMap
(Animal.Type.class); for (Animal a : Animal.getAnimals()) { animalTypeMap.put(a.getType(), a); } printResult(animalTypeMap.values()); } private static void printResult(Collection
values) { System.out.println(values); } private static void printResult(List
[] animalByType) { for (List
as : animalByType) { System.out.println(as); } }}class Animal{ public static enum Type{LINGZHANG, CAT, FLY}; private String name; private Type type; public Animal(String name, Type type) { this.name = name; this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Type getType() { return type; } public void setType(Type type) { this.type = type; } @Override public String toString() { return "name:" + name; } public static List
getAnimals(){ Animal tiger = new Animal("tiger", Animal.Type.CAT); Animal chiken = new Animal("chiken", Animal.Type.LINGZHANG); Animal monkey = new Animal("monkey", Animal.Type.FLY); List
animals = new ArrayList
(); animals.add(tiger); animals.add(chiken); animals.add(monkey); return animals; }}

转载地址:http://mrkia.baihongyu.com/

你可能感兴趣的文章
java对list中对象的属性排序
查看>>
RabbitMQ的消息确认机制(事务+confirm)
查看>>
C Primer Plus 第4章 字符串和格式化输入输出4.4 printf()和scanf()
查看>>
第14章 结构和其他数据形式 14.6 指向结构的指针
查看>>
FLUSH PRIVILEGES
查看>>
CI3如何使用controller继承
查看>>
Moodle介绍篇
查看>>
nagios部署
查看>>
CentOS 内核升级步骤和方法
查看>>
俄罗斯方块,算法简单 注释详细,大家运行玩玩
查看>>
centos6.5 iptables 配置
查看>>
tuxera NTFS 2016支持macOS 10.12 Sierra
查看>>
ftpclient 上传下载文件
查看>>
JQuery 获取touchstart,touchmove,touchend 坐标
查看>>
exp/imp远程操作数据库
查看>>
安全狗云备份 数据库、网站备份好帮手
查看>>
《Linux 内核分析》课程作业(1)——计算机基本原理和汇编基础
查看>>
ORACLE 近期执行的sql
查看>>
WAS集群安装<六>错误解答及概念术语
查看>>
编写GO的WEB开发框架 (九): Dao和Service
查看>>