Список <DayOfWeek>в локализованном порядке - PullRequest
5 голосов
/ 20 мая 2019

У нас есть перечисление DayOfWeek, определяющее дни недели в стандартном порядке ISO 8601 .

Я хочу List этих объектов в порядке, соответствующем 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 ) ;

➥ Чтобы добавить остальные шесть дней недели в этот список, что является самым простым /самый короткий / самый элегантный подход?

1 Ответ

9 голосов
/ 20 мая 2019

Вы можете использовать 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());
...