Java集合Collection遍歷方法總結


集合類的通用遍歷方式, 用迭代器迭代:
Iterator it = list.iterator();
while(it.hasNext()) {
  Object obj = it.next();
}
 
Map遍歷方式:
 
1、通過獲取所有的key按照key來遍歷
//Set<Integer> set = map.keySet(); //得到所有key的集合
for (Integer in : map.keySet()) {
    String str = map.get(in);//得到每個key多對用value的值
}
 
2、通過Map.entrySet使用iterator遍歷key和value
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
     Map.Entry<Integer, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
 
3、通過Map.entrySet遍歷key和value,推薦,尤其是容量大時
for (Map.Entry<Integer, String> entry : map.entrySet()) {
    //Map.entry<Integer,String> 映射項(鍵-值對)  有幾個方法:用上面的名字entry
    //entry.getKey() ;entry.getValue(); entry.setValue();
    //map.entrySet()  返回此映射中包含的映射關系的 Set視圖。
    System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
 
4、通過Map.values()遍歷所有的value,但不能遍歷key
for (String v : map.values()) {
    System.out.println("value= " + v);
}
 
List遍歷方式:
第一種:
for(Iterator iterator = list.iterator();iterator.hasNext();){                    
    int i = (Integer) iterator.next();                   
    System.out.println(i);               
}
第二種:
Iterator iterator = list.iterator();
while(iterator.hasNext()){
    int i = (Integer) iterator.next();
    System.out.println(i);
}
第三種:
for (Object object : list) { 
    System.out.println(object); 
}
第四種:
for(int i = 0 ;i<list.size();i++) {  
    int j= (Integer) list.get(i);
    System.out.println(j);  
}

https://www.cnblogs.com/leskang/p/6031282.html

 

 

 

遍歷Collection集合中的6種方法:

 

package com.qls.traverse;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

/**
 * 下面是遍歷Collection的幾種方法,以List接口為例:
 * @author 秦林森
 *
 */
public class ListTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] s="sixi is one of the most beautiful villages in china".split(" ");
        List<String> list = Arrays.asList(s);
        /**
         * 第一種方法用增強for循環。(這里List之所以能用增強for循環其原因在於它實現了Iterable接口)
         */
        for(String str:list){
            System.out.print(str+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * 第二種方法用Iterator
         */
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String next = it.next();
            System.out.print(next+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * 第三種方法主要針對LinkedList。因為LinkedList 既有棧(stack)的特點,又有隊列(Queue)
         * 的特點。所以遍歷LinkedList中的元素。根據stack和queue,可以進行相關的遍歷。
         * 遍歷的方法如下所示:
         */
        //Using linkedList as a stack
        LinkedList<String> list2=new LinkedList<>(list);//創建一個LinkeList包含list中的全部元素。
        while(!list2.isEmpty()){
            System.out.print(list2.removeFirst()+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * Using linkedList as a queue
         */
        LinkedList<String> list3=new LinkedList<>(list);
        while(list3.peek() != null){
            System.out.print(list3.poll()+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * 第四種方法把所有的Collection都可以當做Enumeration進行遍歷
         * Collections.enumeration(c)
         */
        ArrayList<String> list4=new ArrayList<>(list);
        Enumeration<String> e = Collections.enumeration(list4);
        while(e.hasMoreElements()){
            System.out.print(e.nextElement()+" ");
        }
        /**第五種方法
         * 當然還有其他方法如:
         */
        System.out.println();
        System.out.println("************");
        for(int i=0;i<list4.size();i++){
            System.out.print(list4.get(i)+" ");
        }
        System.out.println();
        System.out.println("************");
        /**第六種方法:
         *再如:
         */
        while(!list4.isEmpty()){
            int index=0;
            System.out.print(    list4.remove(index++)+" ");
        }
        /**
         * 備注:在List接口中的所有實現類中最常用的是ArrayList   LinkedList
         * ArraList比LinkedList的速度快,一般情況下選中ArrayList的情況比LinkedList多。
         * 在ArrayList源碼中有一個serialVersionUID,這個數字保證了,
         * 寫入文件(ObjectOutputStream.writeObject(Object))
         * 讀取文件(ObjectInputStream.readObject())可以順利進行,
         * 並且指明這個數字,可以保持各個版本的兼容性。有利於文件傳輸。
         */

    }

}/*Output:
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china
************
sixi is one of the most beautiful villages in china *///:~

 

2. List遍歷

List的遍歷方法主要有以下幾種:

    • 普通for循環遍歷
    • 增強for循環遍歷
    • 迭代器Iterator遍歷
    • 結合for循環和Iterator遍歷
    • lambada表達式遍歷
      下面一個示例說明一下List的遍歷方法
package Collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTraverse {
   public static void main(String[] args) {
       //創建List
       List<String> list = new ArrayList<String>();
       list.add("Java");
       list.add("Python");
       list.add("C++");
       list.add("C");
       list.add("Golang");

       //使用普通for循環遍歷List
       for (int i = 0; i < list.size(); i++) {
           System.out.println(list.get(i));
       }
       //使用增強for循環遍歷
       for (String str: list) {
           System.out.println(str);
       }
       //使用迭代器Iterator遍歷
       Iterator<String> iterator = list.iterator();
       while (iterator.hasNext()){
           System.out.println(iterator.next());
       }
       //結合for循環和Iterator遍歷
       for ( Iterator<String> iterator1 = list.iterator();iterator1.hasNext();){
           System.out.println(iterator1.next());
       }

       //使用lambada表達式遍歷
       list.forEach(str -> System.out.println(str));
   }
}

3. Set遍歷

Set遍歷一般有以下兩種方法:

    • 迭代器Iterator遍歷
    • 增強for循環遍歷
      下面一個示例說明一下Set的遍歷方法:
package Collection;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetTraverse {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("Java編程思想");
        set.add("算法導論");
        set.add("數據結構與算法");

        //使用迭代器Iterator遍歷
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //使用增強for循環遍歷
        for (String str: set) {
            System.out.println(str);
        }

    }
}

3. Map遍歷
Map遍歷一般有以下四種方法:

使用hashMap.entrySet循環:
使用Iterator遍歷
使用hashMap.keySet()/hashMap.values/Iterator
使用hashMap.keySet()/forEach遍歷
下面以一個示例說明Map的遍歷方法:
————————————————
版權聲明:本文為CSDN博主「Anseong」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42155910/article/details/109136194

package Collection;

import java.util.*;

public class MapTraverse {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("name","張三");
        map.put("age","18");
        map.put("sex","male");

        //使用hashMap.entrySet()循環
        for (Map.Entry<String,String> entry:map.entrySet()){
            System.out.println(entry.getKey() + "----->" + entry.getValue());
        }
        //使用Iterator遍歷
        Iterator<Map.Entry<String,String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String,String> entry = iterator.next();
            System.out.println(entry.getKey() + "----->" + entry.getValue());
        }
       //使用hashMap.keySet()/hashMap.values/Iterator
        Set<String> strings = map.keySet();
        Collection<String> values = map.values();
        for (Iterator<String> iterator1 = strings.iterator();iterator1.hasNext();) {
            String key = iterator1.next();
            String value = (String) map.get(key);
            System.out.println(key + "----->" + value);
        }
        for (Iterator i = values.iterator(); i.hasNext();) {
            String s = (String) i.next();
            System.out.println(s);
        }

        //使用hashMap.keySet()/forEach遍歷
        Set<String> keys = map.keySet();
        for (String key :keys){
            System.out.println(key + "----->" + map.get(key));
        }
        
    }
}

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM