遍历集合的方法总结

遍历集合(容器)的方法总结

使用Iterator迭代器遍历容器元素

Iterator迭代器

Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,如ArrayList、LinkedList、HashSet…,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式。

把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。

使用Iterator遍历List、Set、Map,代码如下:

package com.msl.collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * 测试迭代器遍历集合
 * @author Senley
 *
 */
public class TestIterator {
    public static void main(String[] args) {
        testIteratorList();
        testIteratorSet();
        testIteratorMap();
    }
    
    public static void testIteratorList() {
        List<String> list = new ArrayList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        
        //使用Iterator遍历List
        for(Iterator<String> iter=list.iterator();iter.hasNext();) {
            String temp = iter.next();
            System.out.println(temp);
        }
    }
    
    public static void testIteratorSet() {
        Set<String> set = new HashSet<>();
        set.add("aa");
        set.add("bb");
        set.add("cc");
        
        //使用Iterator遍历Set
        for(Iterator<String> iter=set.iterator();iter.hasNext();) {
            String temp = iter.next();
            System.out.println(temp);
        }
    }
    
    public static void testIteratorMap() {
        Map<Integer,String> map = new HashMap<>();
        map.put(100,"aa");
        map.put(200,"bb");
        map.put(300,"cc");
        
        //使用Iterator遍历Map,第一种方式
        Set<Entry<Integer,String>> ss = map.entrySet();
        for(Iterator<Entry<Integer,String>> iter=ss.iterator();iter.hasNext();) {
            Entry<Integer,String> temp = iter.next();
            System.out.println(temp.getKey()+"---"+temp.getValue());
        }
        
        //使用Iterator遍历Map,第二种方式
        Set<Integer> keySet = map.keySet();
        for(Iterator<Integer> iter=keySet.iterator();iter.hasNext();) {
            Integer key = iter.next();
            System.out.println(key+"---"+map.get(key));
        }
    }
}

结果如下:

aa
bb
cc
aa
bb
cc
100---aa
200---bb
300---cc
100---aa
200---bb
300---cc

遍历集合(容器)的方法

遍历List方法一:普通for循环

for(int i=0;i<list.size();i++){//list为集合的对象名
    String temp = (String)list.get(i);
    System.out.println(temp);
}

遍历List方法二:增强for循环

for (String temp : list) {
    System.out.println(temp);
}

遍历List方法三:使用Iterator迭代器(1)

for(Iterator iter = list.iterator();iter.hasNext();){
    String temp = (String)iter.next();
    System.out.println(temp);
}

遍历List方法四:使用Iterator迭代器(2)

Iterator iter = list.iterator();
while(iter.hasNext()){
    Object  obj = iter.next();
    iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式
    System.out.println(obj);
}

遍历Set方法一:增强for循环

for(String temp:set){
    System.out.println(temp);
}

遍历Set方法二:使用Iterator迭代器

for(Iterator iter = set.iterator();iter.hasNext();){
    String temp = (String)iter.next();
    System.out.println(temp);
}

遍历Map方法一:根据key获取value

Map<Integer, Man> maps = new HashMap<Integer, Man>();
Set<Integer> keySet = maps.keySet();
for(Integer id : keySet){
    System.out.println(maps.get(id).name);
}

遍历Map方法二:使用entrySet

Set<Entry<Integer, Man>> ss = maps.entrySet();
for (Iterator iterator = ss.iterator(); iterator.hasNext();) {
    Entry e = (Entry) iterator.next(); 
    System.out.println(e.getKey()+"--"+e.getValue());
}
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021-2022 Senley
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信