【问题标题】:How to split array into different array or same array with different keys by checking the array value如何通过检查数组值将数组拆分为不同的数组或具有不同键的相同数组
【发布时间】:2022-02-26 16:44:52
【问题描述】:

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

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}]
]

我发现的一种方法是检查整个月的条件并拆分这些数组。但我不想那样做。有没有其他方法可以让我不必检查所有月份的情况?

【问题讨论】:

  • 见这个例子stackoverflow.com/a/36678648/3883957使用Collectors.groupingBy
  • 我查看了示例,但它说此级别不支持 lamda 表达式
  • 也许这个使用 Apache Commons Collections 的答案 stackoverflow.com/a/35524722/3883957 会有所帮助?
  • CalendarDay{2017-8-13} 到底是什么数据类型?它是字符串、自定义类还是什么?因为我有一个想法,但我需要更多细节来看看它是否有效。
  • 它是日历日格式,但如果你知道字符串而不是字符串,它也可以是字符串

标签: java android arrays split


【解决方案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}]
}

【讨论】:

  • 这里的字典应该是什么样子。我试过了,但它是空的。
  • 是的,我将日历日数组列表转换为字符串数组列表并执行了您的代码
  • 究竟是什么问题?它打印一个空字典还是什么都不打印?
【解决方案2】:

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

【讨论】:

  • 我知道那个解决方案,但我想要的是如果有不同的方法,这样我就不必检查所有月份
猜你喜欢
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多