gpt4 book ai didi

java - 从代表某些工作日的 ENUM 中获取 ENUM 值的好方法是什么

转载 作者:行者123 更新时间:2023-12-03 18:43:09 26 4
gpt4 key购买 nike

我有一个 ENUM只有 3 个常数。基于标志,命名为 weekend , ENUM.values() 应该返回 3 或 2 个常量。

public enum Weekday { 
SUNDAY, MONDAY, TUESDAY;
}

public Weekday[] getDays() {
boolean weekend = true;
if (weekend){
return Weekday.values() // this will reurn SUNDAY, MONDAY, TUESDAY
} else { // when weekend is false
return Weekday.values() // it should return on MONDAY, TUESDAY
}
}
请提出建议,实现这一目标的合理好方法是什么。我可以使用以下代码实现它。不幸的是,公关审查员似乎对此并不满意。你能提出更好的方法吗?
我的解决方案。
 EnumMap<Weekday, Integer> days= new EnumMap<>(Weekday.class);
days.put(Weekday.MONDAY, 1);
days.put(Weekday.TUESDAY, 2);

return days.keySet().toArray(new Weekday[0]); // this returns MONDAY and TUESDAY.

最佳答案

怎么样:

 public enum Weekday {
SUNDAY, MONDAY, TUESDAY;
}

public Weekday[] getDays() {
boolean weekend = callFromSomeAPI();
return weekend ? Weekday.values() : new Weekday[] {Weekday.MONDAY, Weekday.TUESDAY};
}
当然,在 Enum 的一个更典型的使用中 Weekday将代表 一周中的所有 7 天 ,并使用变量(例如, weekendweekdays )来区分工作日和周末。就像是:
enum Weekday {
MONDAY(false),
TUESDAY(false),
WEDNESDAY(false),
THURSDAY(false),
FRIDAY(false),
SATURDAY(true),
SUNDAY(true);

private final boolean weekend;

Weekday(boolean weekend) {
this.weekend = weekend;
}

public static Weekday[] getDays(boolean weekend) {
return Arrays.stream(values()).filter(i -> i.weekend == weekend).toArray(Weekday[]::new);
}
}

关于java - 从代表某些工作日的 ENUM 中获取 ENUM 值的好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65009986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com