集合的迭代器:iterator
迭代:在Java中”迭代”这个词语等同于”循环”,”遍历”
在集合中的”迭代”主要用来遍历集合中的元素,把List集合和Set集合和Map集合这三种集合都转成集合的”迭代”
集合的迭代器的本质就是把所有集合的遍历方式转换成迭代器这一种遍历方式
实现步骤:(其实这三种类型的集合在转换成迭代器集合的方法是差不多的,下面就来详细讲解:)
在转换之前首先要获取一个集合,为方便阅读,我就把这三种集合的获取代码放在一起,其中Student类,Teacher类,和Person类是早就写好的,其中Student类和Teacher类继承了Person类,子类有自己的属性和方法,也有继承自父类的,因为和迭代器无关,所以就不做赘述.:
public class IteratorClass {
/**
* 获取一个List集合
* @return
*/
public List<Person> getPerson_List(){
List<Person> list=new ArrayList<Person>();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张四",22,"S004");
Teacher tea1=new Teacher("赵柳",30,10000);
Teacher tea2=new Teacher("田兴",31,20000);
list.add(0,stu1);
list.add(1,stu2);
list.add(2,stu3);
list.add(3,stu4);
list.add(4,tea1);
list.add(5,tea2);
return list;
}
/**
* 获取一个map集合
*/
public Map<String,Person> getPerson_Map(){
Map<String,Person> map=new HashMap<String,Person>();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张四",22,"S004");
Teacher tea1=new Teacher("赵柳",30,10000);
Teacher tea2=new Teacher("田兴",31,20000);
map.put(stu2.getName(),stu1);
map.put(stu3.getName(),stu2);
map.put(stu4.getName(),stu3);
map.put(stu1.getName(),stu4);
map.put(tea1.getName(),tea1);
map.put(tea2.getName(),tea2);
return map;
}
/**
* 获取一个set集合
* @return
*/
public Set<Person> getPerson_Set(){
Set<Person> set=new HashSet<Person>();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张四",22,"S004");
Teacher tea1=new Teacher("赵柳",30,10000);
Teacher tea2=new Teacher("田兴",31,20000);
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
set.add(tea1);
set.add(tea2);
return set;
}
-List集合转换成迭代器集合,用迭代器的方式迭代数据元素
/**
* 把list集合转换成iterator迭代器集合
* 然后用迭代器的方式迭代数据
*/
public void iterator_list(){
List<Person> list=this.getPerson_List();
Iterator<Person> it=list.iterator();//把list集合转换成迭代器集合
while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
Person person=it.next();//从迭代器中取出下一个元素
if(person instanceof Student){
Student stu=(Student)person;
System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
}else if(person instanceof Teacher){
Teacher tea=(Teacher)person;
System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
}
}
}
-Set集合转换成迭代器集合,用迭代器的方式迭代数据元素
/**
* 把set集合转换成iterator迭代器集合
* 然后用迭代器的方式迭代数据
*/
public void iterator_set(){
Set<Person> set=this.getPerson_Set();
Iterator<Person> it=set.iterator();//把set集合转换成迭代器集合
while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
Person person=it.next();//从迭代器中取出下一个元素
if(person instanceof Student){
Student stu=(Student)person;
System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
}else if(person instanceof Teacher){
Teacher tea=(Teacher)person;
System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
}
}
}
-Map集合转换成迭代器集合,用迭代器的方式迭代数据元素
/**
* 把map集合转换成iterator迭代器集合
* 然后用迭代器的方式迭代数据
*/
public void iterator_map(){
Map<String,Person> map=this.getPerson_Map();
Iterator<Person> it=map.values().iterator();//把map集合转换成迭代器集合
while(it.hasNext()){//it.hasNext()的功能是问是否有下一个元素,不是取下一个元素
Person person=it.next();//从迭代器中取出下一个元素
if(person instanceof Student){
Student stu=(Student)person;
System.out.println("name="+stu.getName()+"age="+stu.getAge()+"stuNo="+stu.getStuNo());
}else if(person instanceof Teacher){
Teacher tea=(Teacher)person;
System.out.println("name="+tea.getName()+"age="+tea.getAge()+"Salary="+tea.getSalary());
}
}
迭代器的设计模式:解决大量数据遍历的问题,就是用迭代器这一种遍历方式遍历数据
不知道你搞明白了没有?