枚举的一些用法
来源:互联网 发布:美团金融java开发 编辑:程序博客网 时间:2024/06/06 00:57
枚举策略模式:
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{@Overridedouble overPay(double hours, double payRate) {return hours * payRate * 3;}},WEEKDAY{@Overridedouble 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<Style> styles){if(styles.contains(Style.BOLD)){System.out.println("BOLD");}if(styles.contains(Style.ITALIC)){System.out.println("ITALIC");}}public static void main(String[] args) {TestEnumSet tes = new TestEnumSet();tes.applyStyles(TestEnumSet.STYLE_BOLD | TestEnumSet.STYLE_ITALIC);tes.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC));}}
枚举作为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<Animal>[] animalByType = new List[Animal.Type.values().length];for (int i = 0 ; i < animalByType.length; i++) {animalByType[i] = new ArrayList<Animal>();}for (Animal a : Animal.getAnimals()) {animalByType[a.getType().ordinal()].add(a);}printResult(animalByType);Map<Animal.Type, Animal> animalTypeMap = new EnumMap<Animal.Type, Animal>(Animal.Type.class);for (Animal a : Animal.getAnimals()) {animalTypeMap.put(a.getType(), a);}printResult(animalTypeMap.values());}private static void printResult(Collection<Animal> values) {System.out.println(values);}private static void printResult(List<Animal>[] animalByType) {for (List<Animal> 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;}@Overridepublic String toString() {return "name:" + name;}public static List<Animal> 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<Animal> animals = new ArrayList<Animal>();animals.add(tiger);animals.add(chiken);animals.add(monkey);return animals;}}
0 0
- 枚举的一些用法
- 关于枚举的一些用法
- 黑马程序员_枚举的一些简单用法
- 枚举类型的用法
- 枚举的用法
- 枚举 Enum 的用法
- enum(枚举)的用法
- 枚举的用法
- 枚举类的用法
- 枚举的用法
- 转载!!!枚举的用法
- 枚举类型的用法
- java 枚举的用法
- 枚举 的用法 enum
- 枚举的用法
- 枚举的用法
- NS_OPTIONS枚举的用法
- 枚举的用法
- 二叉堆
- Java程序员常犯的10个错误
- 自定义控件,没来得及整理,先放着
- Jquery SerializeObject - 将form表单转化成Javascript object
- ios的blog(慢慢更新)
- 枚举的一些用法
- JS,Jquery获取各种屏幕的宽度和高度
- linux 常见命令
- 使用maven打包jar后 执行jar包问题,Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefi
- AnimationUtils类:动画工具类
- jsp获取到用户请求的链接
- 子窗口全屏和还原实现
- JS基础:1.1 HelloWorld
- JS基础:1.2定义JS标签和输出