我有一个一周中的天数(每天、周末和工作日)的枚举,如下所示,其中每个条目都有一个 int 值。
public enum DaysOfWeek {
Everyday(127),
Weekend(65),
Weekdays(62),
Monday(2),
Tuesday(4),
Wednesday(8),
Thursday(16),
Friday(32),
Saturday(64),
Sunday(1);
private int bitValue;
private DaysOfWeek(int n){
this.bitValue = n;
}
public int getBitValue(){
return this.bitValue;
}
}
给定值的任意组合的总数,计算所有单个值并从中创建数组列表的最简单方法是什么。例如,给定数字 56(即周三+周四+周五),如何计算天数。
最佳答案
表示枚举值集合的正确方法是使用 EnumSet
。这在内部使用了位 vector 。但是在代码中暴露这样的实现细节并不是一个好主意。我们在这里进行面向对象,而不是闲聊。
此外,您将单个值和值集合的概念混合在一起,这可能会导致以后出现麻烦。
使用 DayOfWeek
的示例Java 8 及更高版本中内置了枚举。
EnumSet<DayOfWeek> weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY );
Boolean isTodayWeekend = weekend.contains( LocalDate.now().getDayOfWeek() );
关于Java 一周中的天数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2461815/