假设我们可以通过使用Locale
进行软编码来确定一周的第一天:
DayOfWeek firstDayOfWeek = WeekFields.of( Locale.US ).getFirstDayOfWeek() ; // Sunday-Saturday.
…并且考虑到Java带有一个内置的枚举,定义了一周中的几天,DayOfWeek:
DayOfWeek[] dows = DayOfWeek.values() ; // Monday-Sunday
我们如何创建另一个数组或元素列表,这些元素是按照指定区域设置定义的顺序重新排列的DayOfWeek
枚举对象?
2条答案
按热度按时间h43kikqp1#
tl;博士
详细信息
幸运的是,你不需要自己做列表轮换工作。
Collections
实用程序类提供了rotate
方法。将列表与偏移量一起传递。引用Javadoc:
将指定列表中的元素旋转指定距离。调用此方法后,索引i处的元素将是之前索引(i-distance)mod list处的元素。size(),用于0和list之间的所有i值。size()-1,包括。(此方法对列表的大小没有影响。)
例如,假设列表包含[t,a,n,k,s]。调用Collections之后。rotate(list,1)(或Collections.rotate,-4)),list将包含[s,t,a,n,k]。
转储到控制台。
请参阅code run at Ideone.com。
[周一、周二、周三、周四、周五、周六、周日]
[星期日、星期一、星期二、星期三、星期四、星期五、星期六]
-6
或者更简单地说:
请参阅此code run at Ideone.com。
[星期日、星期一、星期二、星期三、星期四、星期五、星期六]
ewm0tg9j2#
以下是如何使用
List.subList()
和Stream.concat()
来完成此操作。核心理念
旋转列表可由两部分构成:
这就是实现的样子:
A link to Online Demo升