【发布时间】:2016-09-26 04:14:46
【问题描述】:
为简单起见,假设我有一个ArrayList,其索引只包含一个个位数的整数。例如:
6 4 5 6 0 6 3 4 1 6 1 6 0 6 8 3
我想过滤掉所有出现的子列表6 0 6,这样新的列表就变成了:
6 4 5 3 4 1 6 1 8 3
有没有办法做到这一点?使用ListIterator 似乎对我不起作用,因为我必须共同考虑三个连续的元素,老实说我不知道该怎么做。
这是我实现的方法的框架:
public static void filterList(ArrayList<Integer> list) {
ListIterator<Integer> iterator = list.listIterator();
int elem;
while (iterator.hasNext()) {
// Remove any sublist of 6 0 6
}
}
编辑:同样,为简单起见,我们假设不会有 60606 或类似的情况。
【问题讨论】:
-
为什么不能使用
list.removeAll(sublist) -
输入是60606会是什么情况?
-
@Naruto 这个例子没关系。我只是想说明这个想法。
-
@Sam 这将删除所有出现的
6或0。它不会强制 3 个数字的顺序。 -
@4castle ya 你是对的..但是如果子列表包含元素(6 0 6),那么它会很有用。