1. 程式人生 > >Java中List Set Map集合的遍歷

Java中List Set Map集合的遍歷

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=new
ArrayList<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集合的遍歷