【发布时间】:2015-10-12 20:10:54
【问题描述】:
我遍历一个由对象组成的数组。我想找到这个数组的某些部分,其中相同的特定对象彼此跟随。
[a,b,c,#,#,#,h,g,a,#,#,s,#.h] --> 我要查找 #,#,# 和 #,# (#是具体的对象)
我已经想出了如何做到这一点:如果我找到一个“#”,我将把这个对象添加到一个临时的 ArrayList 中。如果下一个对象也是一个“#”,我也会添加它,否则我会清除 tmplist,因为它是一个单一的“#”。如果下一个对象不是 # 但 tmplist 大于 1,我想将 tmplist 添加到 2d ArrayList(由 ArrayList 组成的 ArrayList)并清除 tmplist,以便我可以找到其他部分。
这是我的问题:如果我这样做,则 2d arraylist 不包含 templists 的 deepcopys--> 2d arraylist 由空列表组成,因为我在每个找到的“模式”之后清除 tmplist。我该如何解决这个问题?
一些可以更好地解释它的代码:
List<Object> tmplist = new ArrayList<Object>();
for (int i = 0; i<array.length(); i++) {
if (array[i].equals(#)) {
tmplist.add(array[i]);
if (!array[i+1].equals(#) && tmplist.size() < 2){
tmplist.clear();
} else if (!array[i+1].equals(#) && tmplist.size() > 1) {
pattern.add(tmplist);
tmplist.clear();
}
}
}
//pattern is the 2d ArrayList (ArrayList which consists of ArrayLists)
【问题讨论】:
-
如果您遇到
[a,b,c,#,#,#]。你的代码一定会被IndexOutOfBoundsException!
标签: java arrays list multidimensional-array arraylist