Java中List Set Map集合的遍歷
阿新 • • 發佈:2018-11-27
try com 實體 name 遍歷 code private style cto
創建Student實體
package com.smic.test; public class Student { private String name = null; private Integer age = null; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, Integer age) { super(); this.name = name; this.age = age; } }
一、List集合的遍歷
Student s1=new Student("衛莊", 32); Student s2=new Student("蓋聶", 35); Student s3=new Student("黑白玄翦", 36); List<Student> l=newArrayList<Student>(); l.add(s1); l.add(s2); l.add(s3);
(1)for循環遍歷
for (int i = 0; i < l.size(); i++) { System.out.println(l.get(i).getName()); }
(2)foreach循環遍歷
for (Student stu : l) { System.out.println(stu.getName()+"\t"+stu.getAge()); }
(3)Iterator叠代器遍歷(List,Set,Map都通用)
Iterator<Student> is=l.iterator();while(is.hasNext()){ Student s=is.next(); //錯誤書寫,只能用一次is.next()叠代器 // System.out.println(is.next().getName()+"\t"+is.next().getAge()); System.out.println(s.getName()+"\t"+s.getAge()); }
(4)上面3種均可以不適用泛型來遍歷,只是需要強轉,不僅如此,後面的Set集合,Map集合同理
Iterator i=l.iterator() while(i.hasNext()){ Student s=(Student)i.next();//強轉 System.out.println(s.getName()+"\t"+s.getAge()); }
(5)不常用
for(Iterator i=l.iterator();i.hasNext();){ Student s=(Student)i.next(); System.out.println(s.getName()+"\t"+s.getAge()); }
二、Set集合
Student s1=new Student("衛莊", 32); Student s2=new Student("蓋聶", 35); Student s3=new Student("黑白玄翦", 36); Set<Student> s=new HashSet<Student>(); s.add(s1); s.add(s2); s.add(s3);
(1)使用Iterator泛型來遍歷
Iterator<Student> is=s.iterator(); while(is.hasNext()){ Student stu=is.next(); System.out.println(stu.getName()+"\t"+stu.getAge()); }
(2)適用foreach遍歷
for (Student stu : s) { System.out.println(stu.getName()+"\t"+stu.getAge()); }
三、Map集合
Student s1=new Student("衛莊", 32); Student s2=new Student("蓋聶", 35); Student s3=new Student("黑白玄翦", 36); Map<String,Student> ms=new HashMap<String,Student>(); ms.put("stu1", s1); ms.put("stu2", s2); ms.put("stu3", s3);
(1)Iterator遍歷 key值要不一樣 不然拿到一個Student
Iterator<Map.Entry<String, Student>> it=ms.entrySet().iterator();//Map.可以不寫 while(it.hasNext()){ Map.Entry<String, Student> stu=it.next(); System.out.println(stu.getKey()+"\t"+stu.getValue().getName()); }
(2)先拿到key值再拿取對應的value值
Set<String> set=ms.keySet(); for (String str : set) { System.out.println(str+"\t"+ms.get(str).getName()); }
(3)對於數據量大的Map集合遍歷
for(Entry<String, Student>entry:ms.entrySet()){ System.out.println(entry.getKey()+"\t"+entry.getValue().getName()); }
(4)只遍歷Map的值
Collection<Student> col=ms.values(); for (Student stu : col) { System.out.println(stu.getName()); }
四、集合嵌套
(1)List<Map<String,Student>>
Student s1=new Student("衛莊", 32); Student s2=new Student("蓋聶", 35); Student s3=new Student("黑白玄翦", 36); Map<String,Student> ms=new HashMap<String,Student>(); ms.put("stu1", s1); ms.put("stu2", s2); ms.put("stu3", s3); List<Map<String,Student>> list=new ArrayList<Map<String,Student>>(); list.add(ms);
------------------------------------------------------------------------------------------------------------------
for (int i = 0; i < list.size(); i++) { Map<String,Student> map=list.get(i); Set<String> set=map.keySet(); for (String str : set) { System.out.println(str+"\t"+map.get(str).getName()); } }
------------------------------------------------------或者等等-------------------------------------------------
for (int i = 0; i < list.size(); i++) { Map<String,Student> map=list.get(i); for(Entry<String, Student> entry:map.entrySet()){ System.out.println(entry.getKey()+"\t"+entry.getValue().getName()); } }
Java中List Set Map集合的遍歷