ListIterator和Iterator区别
Iterator只能正向遍历数组,没有构造器,通过Collection对象获取,只可以删除该元素,不能进行此方法以外的任何增删操作。光标指向当前元素的index。
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
==================Iterator的删除练习====================
// 1.Iterator的删除练习
private static void test01(ArrayList<String> arr) {
// 1.Iterator的删除练习,注意,只有获取之后才可以操作删除,而且一个元素删除只能操作一次。
Iterator<String> it = arr.iterator();// 获取遍历
while (it.hasNext()) { // 判断
if (it.next() == "cc") // 获取下一个元素,并判断
it.remove(); // 符合条件,则删除
}
}
ListIterator可以进行正向和逆向遍历操作,调用时没有当前元素,始终在于元素之间。可以在遍历时增删改操作。
void add(E e) 将指定的元素插入列表(可选操作)。
boolean hasNext() 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true。
boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
E next() 返回列表中的下一个元素。
int nextIndex() 返回对 next 的后续调用所返回元素的索引。
E previous() 返回列表中的前一个元素。
int previousIndex() 返回对 previous 的后续调用所返回元素的索引。
void remove() 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。
void set(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。
改删增的顺序不能错:
void set(E e)用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。只有在最后一次调用 next 或 previous 后既没有 调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。
void remove()从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。对于每个 next 或 previous 调用,只能执行一次 此调用。只有在最后一次调用 next 或 previous 之后,尚未调用 ListIterator.add 时才可以执行该调用。
void add(E e)将指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1)。
==================ListIterator的删除练习====================
// 正向迭代时可有可无int参数,确定指针位置,默认的是从开头便利,也可以从任意位置。
ListIterator<String> lit = arr.listIterator();
while (lit.hasNext())
System.out.println(lit.next());
// 逆向迭代时传入int参数,确定指针位置,可以从末尾,也可以从任意位置。
ListIterator<String> lit = arr.listIterator(arr.size());
while (lit.hasPrevious()) {
System.out.println(lit.previous());
}
//固定顺序 先修改,再删除,最后添加。
ListIterator<String> lit = arr.listIterator(3);
while (lit.hasNext()) {
lit.next();
lit.set("hh"); //对每次获取一个数据可以多次改写,最后一次有效
lit.set("hh");
lit.remove(); ///对每次获取一个数据只可以做一次删除
lit.add("ff"); //对每次获取一个数据可以进行多次添加,顺序添加在当前元素后面
lit.add("gg");
}
|
|