1.1 Iterator迭代器接口介绍
Collection接口继承了Iterator接口,在该接口中包含一个名为iterator的抽象方法,所以有实现了Collection接口的容器类对该方法做了具体实现。iterator方法返回一个Iterator接口类型的迭代器对象,在该对象中包含了三个方法用于实现对单例容器的迭代器处理。
Iterator迭代器接口作用:通过迭代器当中所定义标准的行为来对不同类型的容器采用相同的方法遍历它们。
1.1.1 迭代器的使用
- 使用Iterator迭代List接口类型容器
package List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorListTest {
public static void main(String[] args) {
//实例化容器
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
// for (int i = 0; i < list.size(); i++) {
// String s = list.get(i);
// System.out.println(s);
// }
// System.out.println("--------");
// for (String list1:list){
// System.out.println(list1);
// }
// System.out.println("--------");
//使用迭代器遍历元素方法一:使用while循环
Iterator<String> iterator=list.listIterator();
// boolean flag = iterator.hasNext();//判断是否有元素
while (iterator.hasNext()){
String next= iterator.next();
System.out.println(next);
}
System.out.println("------------");
//使用迭代器遍历元素方法一:使用for循环
//在for循环第一个位置获取迭代器;在第二个位置迭代器调用hasNext()来判断是否循环
for (Iterator<String> iterator1 = list.iterator();iterator1.hasNext();){
String next = iterator1.next();
System.out.println(next);
}
// if (flag){
// String next = iterator.next();//取出元素
// System.out.println(next);
// }
}
}
- 使用Iterator迭代Set接口类型容器
方法跟List迭代一摸一样:
package Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class IteratorSetTest {
public static void main(String[] args) {
//实例化容器
Set<String> set=new HashSet<>();
set.add("1");
set.add("2");
set.add("3");
Iterator<String> iterator=set.iterator();
//使用while循环迭代
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
//使用for循环迭代
for (Iterator<String> iterator1=set.iterator(); iterator1.hasNext();){
String next = iterator1.next();
System.out.println(next);
}
}
}
- 在迭代器中删除元素
package Map;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorRemoveTest {
public static void main(String[] args) {
List<String> set = new ArrayList<>();
set.add("1");
set.add("2");
set.add("3");
set.add("3");
int flag = -1;
//第一种方法,只能删除数组里边一次指定的的元素;对于多个相同的元素
// for (int i = 0; i < set.size(); i++) {
// if (set.get(i).equals("3")) {
// flag = i;
// }
// }
// if (flag>-1){
// set.remove(flag);
// }
// for (String str:set){
// System.out.println(str);
// }
System.out.println("----------");
//第二种方法则可以删除所有指定的元素
Iterator<String> iterator=set.listIterator();
while (iterator.hasNext()){
String next = iterator.next();
if ("3".equals(next)){
iterator.remove();
}
}
for (Iterator<String> iterator1=set.listIterator();iterator1.hasNext();){
System.out.println(iterator1.next());
}
System.out.println(set);
}
}