首页 > 解决方案 > 列表按本地化顺序

问题描述

我们有以标准ISO 8601顺序DayOfWeek定义星期几的枚举。

我希望List这些对象中的一个以适合于 a 的顺序排列Locale

我们可以很容易地为语言环境确定一周的第一天。

Locale locale = Locale.CANADA_FRENCH ;
DayOfWeek firstDayOfWeek =  WeekFields.of( locale ).getFirstDayOfWeek() ;

设置List.

List< DayOfWeek > dows = new ArrayList<>( 7 ) ;  // Set initial capacity to 7, for the seven days of the week.
dows.add( firstDayOfWeek ) ;

➥ 要将一周中的其他六天添加到该列表中,最简单/最短/最优雅的方法是什么?

标签: javadayofweekjava-time

解决方案


可以使用的plus方法DayOfWeek

计算从周日到周一在一周结束时滚动。

递增数字IntStream及其range方法(包括开始,排他结束)。

Locale locale = Locale.CANADA_FRENCH;
DayOfWeek firstDayOfWeek = WeekFields.of(locale).getFirstDayOfWeek();

List<DayOfWeek> dows = IntStream.range(0, 7)
        .mapToObj(firstDayOfWeek::plus)
        .collect(Collectors.toList());

推荐阅读