我一直试图用这些方法做几天。关键是,我有两个方法,一个删除前面的值,另一个删除后续值。
在每个中,我得到一个ListIterator类型的参数和另一个Object类型的参数。我要检查的值的实例是ListIterator中的Object。
例如,当删除前面的值时,我会得到一个列表,例如:
[12, 42, 28, 92, 3, 25, 3, 89]
我应该在每次出现数字3之前删除该元素,使其变为:
[12, 42, 28, 3, 3, 89]
删除后续值时,我会得到一个列表,如:
[12, 42, 28, 92, 3, 25, 3, 89]
我应该在每次出现数字3后删除该元素,使其变为:
[12, 42, 28, 92, 3, 3]
我已经尝试过这样做,但没有成功。这是我目前的代码:
删除前面的内容:
public static void removePreceeding(ListIterator it, Object value) {
if (it.hasNext()) {
it.next();
} else {
return;
}
while (it.hasNext()) {
if (it.next().equals(value)) {
it.previous();
it.remove();
}
}
}
删除成功:
public static void removeSucceeding(ListIterator it, Object value) {
while (it.hasNext()) {
if (it.next().equals(value)) {
if (it.hasNext()) {
it.next();
it.remove();
}
}
}
}
感谢所有帮助。 谢谢。
答案 0 :(得分:0)
尝试以下方法:
private static void removePreceeding(ListIterator listIterator, Object value) {
while (listIterator.hasNext()) {
if (listIterator.next().equals(value)) {
if (listIterator.hasPrevious()) {
listIterator.previous();// Note that alternating calls to
// next and previous will return the
// same element repeatedly. Hence
// call another previous to move the
// cursor one level backward
listIterator.previous();
listIterator.remove();
listIterator.next(); // Since the cursor was moved back,
// reset it to next element (i.e
// current element which was visited
// previously)
}
}
}
}
private static void removeSucceeding(ListIterator listIterator, Object value) {
while (listIterator.hasNext()) {
if (listIterator.next().equals(value)) {
if (listIterator.hasNext()) {
listIterator.next();
listIterator.remove();
}
}
}
}