如何从当月开始订购月份名称

Jos*_*ott 3 java sorting

说这是用于存储月份的数组,

String months[] = {"January", "February", "March", "April",
            "May", "June", "July", "August", "September",
            "October", "November", "December"};
Run Code Online (Sandbox Code Playgroud)

我用这种方法来获得当前月份

int monthName=calendar.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)

从当前月份开始,将数组重新排序为新数组或arraylist的最佳方法是什么.

例如:当前月份是八月,所以所需的阵列或Arraylist将是

months[] = {"August", "September", "October", "November",
            "December", "January", "February", "March", "April",
            "May", "June", "July"};
Run Code Online (Sandbox Code Playgroud)

ΦXo*_*a ツ 6

对于那些很快或以后想要使用java 8做同样事情的人来说,这只是另一种选择:)

List<Month> myMonth = Arrays.asList(Month.values());

Collections.rotate(myMonth, 1 - LocalDate.now().getMonthValue());
Run Code Online (Sandbox Code Playgroud)

输出:

[8月,9月,10月,11月,12月,1月,2月,3月,4月,5月,6月,7月]


Psh*_*emo 5

您可以使用Collections.rotate.要向左旋转,您可以使用元素的负值.

String months[] = {"January", "February", "March", "April",
        "May", "June", "July", "August", "September",
        "October", "November", "December"};

int monthIndex = LocalDate.now().getMonth().ordinal();//indexed from 0

Collections.rotate(Arrays.asList(months), -monthIndex); //negative value rotates to left

System.out.println(Arrays.toString(months));
Run Code Online (Sandbox Code Playgroud)

输出: [August, September, October, November, December, January, February, March, April, May, June, July]


Hug*_* M. 5

使用Java 8 Month.values(),和Collections.rotate():

int monthOffset = LocalDate.now().getMonth().getValue() - 1;
List<Month> months = Arrays.asList(Month.values());
Collections.rotate(months, -monthOffset);
System.out.println(months);
Run Code Online (Sandbox Code Playgroud)

打印:

[AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER, JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY]
Run Code Online (Sandbox Code Playgroud)