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));
        }
        
    }
}

 


posted @ 2021-06-08 21:35  huyoo  阅读(1567)  评论(0编辑  收藏  举报