java集合中的迭代器:Iterator
阿新 • • 發佈:2018-12-12
集合的迭代器: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());
}
}
迭代器的設計模式:解決大量資料遍歷的問題,就是用迭代器這一種遍歷方式遍歷資料
不知道你搞明白了沒有?