HashMap中,4种遍历方式。

在HashMap中,有一个明显的特征。在存储的时候,会有一个键值对的关系。键和值存在着一一对应(映射)的关系。而HashMap中的键相当与Set,无序不可重复。因此,在遍历的时候可以用Set集合得到HashMap中的键,然后通过Set集合得到迭代器,最后用迭代器遍历。

遍历方式

1.直接用for循环遍历

    public static void print_for(HashMap<Integer,String> stu){
        Set<Integer> integers = stu.keySet();//keySet得到键 放入set集合中
                                             //第一个元素   判断下一个是否为空  缺省
        for (Iterator<Integer> iterator = integers.iterator();iterator.hasNext();){//从第一个开始遍历
            Integer next = iterator.next();
            System.out.println("ID:"+next+" 姓氏:"+stu.get(next));//通过键得到值
        }
    }

2.foreach(增强for循环)

 public static void print_foreach(HashMap<Integer,String> stu){
        Set<Integer> set=stu.keySet();
        for (Integer st:set) {//foreach
            System.out.println("ID:"+st+" 姓氏:"+stu.get(st));
        }
    }

3.while循环,用迭代器得到键

   public static void print_while(HashMap<Integer,String> stu){
        Iterator<Integer> it=stu.keySet().iterator();//直接得到Integer类型的迭代器
        while (it.hasNext()){
            Integer id=it.next();//得到第一个键
            System.out.println("ID:"+id+" 姓氏:"+stu.get(id));
        }
    }

4.while循环,用迭代器得到键值对

public static void print_while_entry(HashMap<Integer,String> stu){
        Iterator it=stu.entrySet().iterator();//entrySet 得到键值对的迭代器
        while (it.hasNext()){
            Map.Entry entry= (Map.Entry) it.next();//得到键值对
            Integer id=(Integer)entry.getKey();//得到键
            String name=(String)entry.getValue();//得到值
            System.out.println("ID:"+id+" 姓氏:"+name);
        }
    }

打印结果

 public static void main(String[] args) {
        HashMap<Integer,String>  student=new HashMap<Integer, String>();
        student.put(1,"赵");        student.put(2,"钱");
        
        student.put(3,"孙");        student.put(4,"李");
        //for循环
        print_for(student);
        System.out.println("=====================");
        //foreach
        print_foreach(student);
        System.out.println("=====================");
        //while
        print_while(student);
        System.out.println("=====================");
        //while-entry
        print_while_entry(student);
    }

四次输出的结果完全一至

总结

第一种遍历方式和第二种差不多,而第三种遍历方式和第四种就有所区别。第三种通过迭代器得到了HashMap中的键,然后在遍历的过程中,通过键去查找值。第四种方法直接用迭代器得到键值对,在遍历的时候直接得到键和值,会少一次通过键找值的过程(不会用到get方法)。所以,第四种遍历方式效率是最高的。


       每日鸡汤:如果你真的愿意去努力,你人生最坏的结果不过大器晚成!


Over!


猜你喜欢

转载自blog.csdn.net/chianz632/article/details/80048631