如何通过检查数组值将数组拆分为不同的数组或具有不同键的相同数组

时间:2017-09-14 07:22:01

标签: java android arrays split

我有一个包含这样日历的数组。这个数组可能包含所有月份的数据。

calendarday: [CalendarDay{2017-8-13}, CalendarDay{2017-8-14}, CalendarDay{2017-9-18}, CalendarDay{2017-9-19}, CalendarDay{2017-10-15}, CalendarDay{2017-10-16}]

我想要的是将这些数组值按月分成不同的数组或不同键的相同数组。像这样

calendarday: [CalendarDay{2017-8-13}, CalendarDay{2017-8-14}]

calendardayone: [CalendarDay{2017-9-18}, CalendarDay{2017-9-19}]

或者像这样

calendarday: [
0:[CalendarDay{2017-8-13}, CalendarDay{2017-8-14}],
1:[CalendarDay{2017-9-18}, CalendarDay{2017-9-19}], 
2:[CalendarDay{2017-10-15}, CalendarDay{2017-10-16}]
]

我找到的一种方法是检查所有月份的条件是否分开并分割这些数组。但我不想那样做。是否有任何替代方法,以便我不必检查所有月份的条件

任何帮助和想法将不胜感激。谢谢你提前。

2 个答案:

答案 0 :(得分:1)

这是我正在考虑的解决方案:将所有CalendarDay保存在字典中,密钥为月份。所以我们从这样的事情开始:

String[] array = {"CalendarDay{2017-8-13}", "CalendarDay{2017-8-14}", "CalendarDay{2017-9-18}", "CalendarDay{2017-9-19}", "CalendarDay{2017-10-15}", "CalendarDay{2017-10-16}"};

然后简单地迭代数组,拆分每个字符串并将其保存到字典中:

Map<String, ArrayList<String>> dictionary = new HashMap<String, ArrayList<String>>();
for (String currentString : array) {
    String month = currentString.split("-")[1];
    ArrayList<String> values = dictionary.get(month);
    if (values == null) {
        values = new ArrayList<String>();
    }
    values.add(currentString);
    dictionary.put(month, values);
}

我们最终会得到类似的结果:

{
    8=[CalendarDay{2017-8-13}, CalendarDay{2017-8-14}], 
    9=[CalendarDay{2017-9-18}, CalendarDay{2017-9-19}], 
    10=[CalendarDay{2017-10-15}, CalendarDay{2017-10-16}]
}

答案 1 :(得分:0)

您可以在每个元素中获取月份的值,然后根据值将其放入不同的数组中