日期的拆分阵列分成多个阵列
例如,我有一些日期日期的拆分阵列分成多个阵列
阵列2016-11-11T12:13:14.120Z
2016-11-12T12:13:14.120Z
2016-11-13T12:13:14.120Z
2016-12-10T12:12:14.120Z
2016-12-10T12:13:14.120Z
2016-12-10T15:13:14.120Z
2016-12-11T12:13:14.120Z
2017-01-11T12:13:14.120Z
我需要实现类似此:
[[2016-11-11T12:13:14.120Z, 2016-11-12T12:13:14.120Z], [2016-11-13T12:13:14.120Z], [2016-12-10T12:12:14.120Z,2016-12-10T12:13:14.120Z,2016-12-10T15:13:14.120Z, 2016-12-11T12:13:14.120Z], [2017-01-11T12:13:14.120Z]]
如果第一和n + 1之间的日期差为小于24小时这个日期必须在阵列,否则 - 创建下一个阵列等。
我可以只写类似的东西
int step = 24;
int currentPos = 0;
ArrayList<ArrayList<Item>> result = new ArrayList<>();
ArrayList<Item> currentArray = new ArrayList<>();
for (int i = 0; i < items.size(); i++) {
Item item = items.get(currentPos);
for (int j = 0; j < items.size(); j++) {
int tmp = currentPos + 1;
if (DateUtils.getDifferenceInHours(item.getEndDate(), items.get(tmp).getEndDate()) <= step) {
currentArray.add(items.get(tmp));
currentPos++;
} else {
currentArray.add(item);
result.add(currentArray);
currentArray = new ArrayList<>();
currentPos++;
break;
}
}
}
但我有IndexOutOfBoundsException异常 请帮助!
这是一个简单的例子与integers.I使用一个Set
从结果中去除重复。
试试这个,
// Create sample ArrayList. Don't do this in your actual code.
ArrayList<Integer> items = new ArrayList<Integer>() {
{
add(1);
add(2);
add(3);
add(2);
add(3);
add(2);
add(4);
}
};
int step = 24;
Set<ArrayList<Integer>> result = new HashSet<>();
for (int i = 0; i < items.size(); i++) {
Integer item1 = items.get(i);
ArrayList<Integer> currentArray = new ArrayList<>();
for (int j = 0; j < items.size(); j++) {
Integer item2 = items.get(j);
if (item1 == item2) { // This is where you need to find the difference of dates
currentArray.add(item1);
}
}
result.add(currentArray);
}
System.out.println(result);
输出,
[[4], [1], [3, 3], [2, 2, 2]]
谢谢,最后,它的工作原理! –
你的代码改成这样:
for (int i = 0; i < items.size(); i++) {
for (int item : items) {
for (int j = 0; j < items.size(); j++) {
int tmp = currentPos + 1;
if (DateUtils.getDifferenceInHours(item.getEndDate(), items.get(tmp).getEndDate()) <= step) {
currentArray.add(items.get(tmp));
currentPos++;
} else {
currentArray.add(item);
result.add(currentArray);
currentArray = new ArrayList<>();
currentPos++;
break;
}
}
}
}
Item item = items.get(currentPos);在这一行上有索引越界异常 –
我编辑了我的答案。 –
最后一项数组遗失 –
你有什么迄今所做?显示你的代码。 –
@KNeerajLal我已经做了日期比较,但我不能写一个正确的循环来实现正确的结果 –
显示您的代码并尝试解释问题是什么。 –